【问题标题】:XSRF protection GET .net mvcXSRF 保护 GET .net mvc
【发布时间】:2010-09-13 23:24:17
【问题描述】:

我有一个会显示敏感信息的网站。我正在使用 Anti Forgery Tokens 等来防止 POSTS 中的 XSRF。但是我担心有人能够从 GET 中查看敏感信息。在 .Net MVC 2 中保护通过 GET 发送的只读数据的推荐做法是什么?

【问题讨论】:

    标签: security asp.net-mvc-2 get csrf


    【解决方案1】:

    如果您确定 GET 请求是只读的,那么您无需担心 XSRF。 just XSRF 不可能从另一个网站窃取信息,因此您不需要通过令牌保护 url。事实上,在 URL 中使用标记会导致无法使用书签。

    话虽如此,您应该 100% 确定您的应用中没有 XSS 漏洞。如果有,攻击者就无需费心使用 XSRF 和不可预测的令牌。

    【讨论】:

    • 如果它是一个修改数据的表单提交,那么它应该是一个 POST,然后重定向到一个 GET url。如果它的表单提交只是作为一种过滤器,它仍然可以是 GET,并且没有理由牺牲可收藏的 url。
    • 我担心以下情况。另一个站点易受 XSS 攻击(或者是通过社会工程访问的恶意站点)。用户登录到我的网站并进入恶意网站,这会向帐户/索引等发出 javascript GET 请求,现在他可以将帐户列表的副本不可见地发回另一个 Web 服务器。
    • 攻击者始终可以从他的站点发出 GET 请求,但由于浏览器的同源策略,他无法读取响应。无论他使用何种客户端技术(XmlHttpRequest、Form 标签、Flash、Silverlight 或其他几种发出 GET 请求的方法中的任何一种),这都是正确的。除非您正在构建一个银行应用程序,否则您不需要对无副作用的 GET 请求执行任何操作。
    • 感谢您澄清这一点,将更多地阅读同源政策。似乎无缘无故地恐慌:D
    【解决方案2】:

    POST 数据的 XSRF 保护(使用你所说的令牌)也应该适用于 GET 数据。从黑客的角度来看,GET 伪造比 POST 伪造要容易得多(首先您只发布一个链接,其次您需要指向一个带有隐藏 iframe 和自动提交表单的恶意软件网站),但是如果它们都失败了检查令牌。

    示例: 发布这样的链接:

    www.domain.tld/page.aspx?get=data&token=token_given_to_hacker

    不应该返回任何东西,或者对于那些获得其他令牌的人来说只是一个错误。这样就不会针对错误的人采取敏感行动。

    这是xsrf,你不能窃取信息,而是让其他人提交表单并采取只有黑客知道的结果。例如: 将电子邮件表单上的电子邮件更改为黑客的电子邮件。假设您有一个 GET 表单,其中包含 1 个字段:新电子邮件(为简单起见)。提交后的 URL 如下所示:

    www.domain.tld/page.aspx?email=myemail@otherdomain.tld

    现在,如果黑客在您的论坛上发布带有 URL 的链接:

    www.domain.tld/page.aspx?email=hackers_email@yetotherdomain.tld

    点击它的每个人都会收到一封来自黑客的新电子邮件。但是,如果您在那里放置一个令牌,并且您每次都会检查它,那么只会对那些在页面请求中给出相同令牌的人采取行动,在这种情况下,该链接仅适用于发布它的用户,没有其他人。

    您还可以使用密码字段保护敏感表单,例如更改电子邮件、密码等。请注意,验证码在这里没有太大帮助。

    【讨论】:

      猜你喜欢
      • 2011-09-09
      • 2013-07-09
      • 1970-01-01
      • 2023-03-11
      • 2020-12-23
      • 1970-01-01
      • 2018-02-18
      • 2014-04-23
      • 2018-04-25
      相关资源
      最近更新 更多