代码之家  ›  专栏  ›  技术社区  ›  user1548418

通过GET请求防止CSRF攻击的安全性?

  •  10
  • user1548418  · 技术社区  · 7 年前

    我在我的web服务器上构建了一个基于JWT的无状态用户身份验证系统,以Stormpath为例( https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage ).

    我能够通过包含一个 <img> <img src="https://example.com/account" /> 可能会提供用户的详细信息,和或 <img src="https://example.com/logout" />

    是这个吗 < 攻击被认为是无害的,因为浏览器不会透露它收到的投诉?滥用HTML标记是否还有其他伎俩可以通过向GET请求泄露服务器输出而导致敏感信息泄露?

    我正在考虑将我的JWT访问令牌的哈希添加到GET URL,并让服务器要求GET请求包含该哈希,并且它必须与cookie中的JWT令牌匹配。这样,攻击者将无法猜测有效的GET URL,同时泄漏此类GET URL将不允许攻击者访问我的服务器,因为他不知道Cookie中的原始JWT。除了一些小的可用性问题外,这个设置对我来说似乎是个好主意,但我还没有在谷歌上搜索出任何类似的内容,所以我很怀疑:)

    1 回复  |  直到 7 年前
        1
  •  13
  •   larnouch    4 年前

    CSRF攻击的概念,它迫使经过身份验证的用户在其授权的web应用程序上执行不想要的操作。

    不涉及数据转移,因为GET请求会将响应获取给受害者,而不是攻击者

    CSRF攻击可以改变服务器的状态,但它看不到结果,只能盲目行动。

    比如说,CSRF攻击可以告诉受害者浏览器请求受害者银行帐户余额,但攻击者看不到该余额。这显然是一次毫无意义的攻击。

    但如果攻击者要求受害者浏览器将资金从受害者帐户转移到攻击者的帐户,这并非毫无意义。攻击脚本无法访问传输的成功或失败页面。攻击者并不关心成功或失败的反应,他主要关心的是他想在自己的账户中拿钱。

    如果您正在执行GET请求以更改服务器的状态,那么这可能会给您带来风险。

    “获取http://bank.com/transfer.do?acct=BOB&金额=100HTTP/1.1“,如果您的请求是这样的。

    我相信这是不可能的。

    所以您必须关注POST请求,该请求应该使用CSRF令牌进行监控。