【问题标题】:CSRF Forms - You can change the token?CSRF 表格 - 您可以更改令牌吗?
【发布时间】:2018-10-11 21:42:41
【问题描述】:

只是想问一个关于带有 CSRF 令牌的 PHP 和 HTML 表单的一般性问题,因此您生成一个随机令牌并将其存储在 PHP 的会话变量中,并在 HTML 表单中作为隐藏字段输出。

但是如果我们在这种情况下,我这样说是否正确:

  • 1 个人叫 Bob 查看secureform.php 页面
  • 同一个人查看badform.php 页面

如果 Bob 转到 badform.php 页面并生成了一个令牌,然后他们转到 secureform.php 并从 secureform.php 获取令牌并通过检查元素将其放入 badform.php 并提交,那有没有办法绕过CSRF正确?

我能否就这是否可行以及如何防止此类事情发生提供一些反馈?如果有道理,如果不让我知道,谢谢!

【问题讨论】:

  • 不,您没有绕过 CSRF,CSRF 旨在防止跨站点请求伪造,使攻击者无法代表用户发送请求。如果 Bob 复制了令牌,他希望该请求发生,但攻击者无法获得令牌。
  • 这个问题应该在信息安全而不是 SO 中提出。
  • 阅读:CSRF

标签: php html csrf web-inspector


【解决方案1】:

Bob 很可能正在做一些你不想要的事情,但这不是 CSRF 令牌旨在防止的事情。

同一场景世界的跨站点请求伪造版本是其他人(称他们为 Eve)欺骗 Bob 提交 badform.php。由于 Eve 控制表单的内容,但 Bob 使用会话 cookie 或其他身份验证信息提交表单,因此 Eve 可以执行只有 Bob 有权执行的操作。

但是,如果表单需要额外的 CSRF 令牌,Eve 无权访问此令牌,因此当他们欺骗 Bob 提交表单时,它会被拒绝。 Eve 可以让表单验证的唯一方法是欺骗 Bob 从 secureform.php 复制一个有效的令牌,这比欺骗他们提交表单要困难得多。

【讨论】:

    猜你喜欢
    • 2016-05-17
    • 2011-09-07
    • 2021-04-21
    • 2014-12-06
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    相关资源
    最近更新 更多