是否应为每个请求包含csrf令牌?

时间:2012-04-04 05:50:03

标签: php csrf

假设用户的帐户中包含私人内容。与任何社交网站一样,当用户浏览他们的帐户时,用户可以看到很多关于他们的信息。所有这些请求都被标记化了吗?制作模式并标记所有请求并在处理之前检查它们是否是一个很好的想法?任何消化? 基于私人帐户系统的所有应用程序是否都标记了所有请求?

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

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

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

1 个答案:

答案 0 :(得分:0)

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.