0

这是故事:

  1. 刚登录后,页面 A 会呈现带有 anti-CSRF 隐藏字段的页面。
  2. 页面 A 包含一个指向页面 B 的链接。通常这将是一个普通的锚点,但为了防止 CSRF,该链接会向页面 B 提交一个带有操作的表单,这会将反 CSRF 隐藏字段放在 POST 中(从而防止显示此值在网址)。
  3. 服务器验证会话并呈现页面 B,再次使用反 CSRF 隐藏字段。
  4. 页面 B 包含一个指向页面 C 的链接,该页面也使用提交并且也由服务器验证。
  5. 在页面 C,用户按下后退按钮返回到 B。

因为 B 是提交的结果,所以浏览器要求重新提交。糟糕的!

我知道我不应该从 POST 返回正文,但是如何在不使用 POST 从一个页面转到另一个页面的情况下安全地发送反 CSRF 字段?如果我使用随机数,后退按钮将产生一个有效的页面......

它有解决方案吗?还是我真的需要更改我的整个网站以使用部分页面更新?

4

0 回答 0