【问题标题】:asp.net and Cross Site Request Forgeryasp.net 和跨站请求伪造
【发布时间】:2013-02-28 05:14:23
【问题描述】:

我们最近运行了一个 Appscan 应用程序,报告在几页上显示: 对原始请求应用了以下更改:

  • 将 HTTP 标头设置为“http://bogus.referer.ibm.com
    推理:
    相同的请求在不同的会话中发送了两次,并收到了相同的响应。 这表明没有一个参数是动态的(会话标识符仅在 cookie),因此应用程序容易受到此问题的影响。

我对如何处理这个问题有点困惑,我应该只查看 Request.UrlReferrer 并确保它与 URL 中的主机相同,还是有更好的方法来处理这个问题?

谢谢。

【问题讨论】:

  • 并非所有浏览器都发送Referer 标头。你应该使用 CSRF 令牌。
  • Referrer 与问题没有直接关系 - AppScan 只是在失败时尝试使用不同的referrer 的请求。忽略那一点; “推理”更好地描述了这个问题。
  • 再看一遍后,我相信我看到了可能发生的事情。我在注销时有 Session.Abandon() ,但是如果会话在用户没有做任何事情的情况下就过期了,那么就没有放弃,也许这就是 appscan 能够两次获得相同响应的方式,因为会话 cookie 没有被删除而只是又捡起来了

标签: asp.net security protect-from-forgery


【解决方案1】:

Referrer 标头很容易被欺骗。您需要使用 CSRF 令牌(我推荐 Synchronizer 令牌模式)来证明请求的来源。您绝对应该阅读an awesome resource at OWASP。祝你好运!

【讨论】:

  • 除了 Freedom_Ben 的回答之外,如果您使用 MVC,您可以使用内置且超级易于使用的 AntiForgeryToken。基本上,您使用 Html 助手来创建令牌,然后将一个属性添加到 post 方法中,该方法将为您验证令牌。更多信息可以在这里找到:msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 2014-06-21
  • 1970-01-01
  • 2021-10-17
  • 2013-11-19
  • 1970-01-01
  • 2012-08-14
  • 2018-11-15
  • 2013-07-17
  • 2014-08-31
相关资源
最近更新 更多