这是关系到 另一个问题我问.总之,我有个特殊情况的一个网址,在那里,当一种形式张贴到它,我不能依靠cookie进行认证或维护用户的会议,但我需要知道他们是谁,我需要知道他们登录!

我想我想出了一个解决我的问题,但它需要充实。这里我在想什么。我创建了一个隐藏的形式领域称为"username",以及地方内用户的用户名、加密的。然后,当形式的员额,虽然我没有收到任何cookie从浏览器,我知道他们登录在因为我可以解密隐藏的形式领域和获得的用户名。

主要的安全漏洞,我可以看到的是重播的攻击。我如何阻止他人取得联系,密串,和发布作为该用户?我知道我可以使用SSL使其难以偷那串,也许我可以旋转的加密钥的基础上定期限的时间的串是良好的,但是我真的很想找到防弹的解决方案。任何人有任何想法?不会的ASP.Net 视图状态阻止重播?如果是这样,他们怎么做?

编辑:我希望有一个解决方案,不需要任何东西储存在一个数据库。应用程序的国家会好起来的,除了它将无法生存IIS重新启动或工作在所有网络场或花园方案。我接受克里斯的回答是,对于现在,因为我不相信它甚至有可能以安全的这种没有一个数据库。但是,如果有人来了一个答案不涉及的数据库,我就接受它!

有帮助吗?

解决方案

如果你的散列在时间标记以及用户名和密码,你可以接近的窗口回复攻击以在几秒钟。我不知道,如果这符合你的需要,但它至少是一个局部的解决方案。

其他提示

如果你真的不要储存任何国家,我想最好你可以做的是限制重复攻击使用的时间戳和短期的时间。例如,服务器发送:

{Ts,U,HMAC({Ts,U}Ks)}

那Ts的时间戳,U为用户名和Ks是服务器的秘密的关键。用户发送这个,回到服务器和服务器验证它通过重新计算的HMAC上提供的价值。如果它是有效的,你知道,当它发出,并可以选择忽视它,如果它的年龄比,也就是说,5分钟。

一个很好的资源对于这种类型的发展 该做的和不该做什么的客户身份验证上网

有几个好的答案在这里,并把他们所有的在一起是最终答案在于:

  1. 方框-密码加密(AES-256+)和哈希(与SHA-2+)所有国家不重性相关信息发送给客户。黑客们,否则仅仅是操纵的数据,查看学习的模式和规避一切。记住...它只需要一个开放的窗口。

  2. 产生的一次随机的和独特的现时每个请求,是送回该员额的请求。这种做两件事:它确保该员额应与该请求。它还允许追踪一个时使用的一个给定的get/POST对(防止重播).

  3. 使用时间戳使数池易于管理。存储的时间邮票在一个加密cookie每#1。扔出任何要求超过最大的响应时间或届会议应用程序(例如,一个小时)。

  4. 商店一个"合理的唯一的"数字指纹的机制请求与加密的时间标记数据。这将防止另一种伎俩所述的攻击偷客户的饼干来执行会议--劫持。这将确保请求是回来不仅只是一次而是从机器(或足够近使其几乎不可能的攻击者复制)的形式发送。

有ASPNET和Java/J2EE安全过滤器的基础的应用程序,完成所有上述零编码。管理数池的大型系统(如股票交易公司、银行或高容量的安全网站)不是一个简单的事业如果能是至关重要的。会让你看的那些产品,与试图以这个程序为每个网络的应用程序。

你可以使用某种类型的随机挑战的字符串的用户名创建的散列。如果存储的挑战串服务器上的一个数据库,然后你可以确保它只是用于一次,仅用于一个特定的用户。

在我的一个应用程序,以阻止重播的攻击,我已经插入知识产权信息进我的话的对象。每次我访问该会议的目的代码中我确保传递请求。UserHostAddress与它然后我比较,以确保IPs匹配。如果他们不这样做,那么显然有人比其他人提出这个要求,所以我回null。这不是最好的解决办法,但它至少是一个更加阻止重播的攻击。

你可以使用的存储器或一个数据库的维护 任何 关于用户的信息或要求在所有吗?

如果是这样,然后在请求的形式,我将包括一个隐藏的形式领域,其内容是一个随机生成的数量。拯救这个标记应用程序方面或某一类商店(数据库、平面文件,等等。) 当请求是呈现。当形式提交,检查应用程序方面,或数据库,看看是否随机产生的数量仍然有效(但是你定义的有效许可过期之后,X分钟)。如果是这样,消除这种令列表中的"允许的标记".

因此,任何重播请求将包括这个相同的标记不再被认为是有效的服务器。

我是新来的某些方面web programming但是,我阅读了这个的一天。我相信你需要使用一个 现时.

(重的攻击可以轻易地将所有关于IP/MAC欺骗,再加上你所遇到的挑战上的动态IPs)

这不仅是重播,你在这里,在隔离这是毫无意义的。只是使用SSL和避免手工制作的东西..

ASP.Net 视图状态是一个混乱,避免它。同时PKI是重量级和臃肿,至少它的工作没有发明创造你自己的安全'计划'.所以如果我可以,我会使用它,并且总是相互欧森.服务器只是鉴别相当没有用的。

视图状态中包括安全功能。看看 这篇文章 有关的一些建立在安全特点ASP.NET .它的验证服务器machineKey在机。配置服务器上,这确保了每个回发是有效的。

进一步下在文章, 你也看到,如果要存储值在你自己的隐藏的领域,可以使用 LosFormatter 类编码的价值相同的方式视图状态的使用加密。

private string EncodeText(string text) {
  StringWriter writer = new StringWriter();
  LosFormatter formatter = new LosFormatter();
  formatter.Serialize(writer, text);
  return writer.ToString();
}

如果你只能接受各关键一次(说,使关键GUID,然后检查的时候回来),这将防止重播。当然,如果攻击者作出响应 第一, 然后你有一个新的问题...

这是web表单或视?如果它视你可以利用仿伪标记。这似乎是它类似于种方法,你说,除了它会使用基本上是一个GUID和集cookie与guid值为这一职务。欲了解更多关于看到史蒂夫*桑德森的博客: http://blog.codeville.net/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/

另一件事,你有没有考虑检查的推荐人在回发?这不是防弹的,但它可能会有所帮助。

使用https...它具有重保护。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top