【问题标题】:Should csrf tokens be included for each request?每个请求都应该包含 csrf 令牌吗?
【发布时间】:2012-04-04 15:12:24
【问题描述】:

假设用户的帐户上有私人内容。像任何社交网站一样,当他们浏览他们的帐户时,用户可以看到很多关于他们的事情。所有这些请求都被标记了吗?制作一个模式并标记所有请求并在处理它们之前检查它们是一个好主意吗?有什么建议吗?
所有基于私人账户系统的应用程序是否都标记了所有请求?

附: :这是一种可能的攻击:用户登录一个社交网站(“x”),保持登录状态,然后转到另一个网站(“y”)。网站 y 有一个按钮,用于获取 x 网站的首页内容,其中包括用户的最新帖子。由于用户已登录,数据将显示...

您将如何为每个请求设置 csrf 令牌机制?设置一个中间进程,如果请求有效,则将请求重定向到最终处理页面?或...任何其他想法?我错了吗?我看错了吗?

在这里我问了同样的问题并得到了正确的最终答案:https://stackoverflow.com/a/10006276/1284817。此处经过验证的答案也很适合阅读。

【问题讨论】:

    标签: php csrf


    【解决方案1】:

    CSRF 令牌通常只附加到代表用户改变事物的事物(例如 POST 请求)。保护攻击者免于查看私有数据要简单得多,而且确实已融入所有流行的浏览器:

    为了保护攻击者查看私有数据(而不是修改它),您通常会依赖浏览器的same origin policy,并确保您的请求不支持Cross-origin resource sharing

    在您建议的具体攻击示例中,攻击者请求 example.org/private,浏览器将在我的浏览器上抛出如下所示的异常:

    XMLHttpRequest cannot load http://example.org/private. Origin http://attacker.com is not allowed by Access-Control-Allow-Origin.
    

    【讨论】:

      猜你喜欢
      • 2014-10-19
      • 2014-01-06
      • 2013-04-25
      • 2018-11-22
      • 2017-10-13
      • 2012-05-15
      • 2016-10-15
      • 2017-01-11
      • 2012-11-04
      相关资源
      最近更新 更多