【问题标题】:Cross site request forgery跨站请求伪造
【发布时间】:2014-06-21 23:20:49
【问题描述】:

我读了this tutorial,它给出了一个很好的解释来防止 CSRF,但它仍然从我的脑海中消失。根据本教程的方法一,他们在每个请求中都包含一个随机令牌。所以他们在表格中包含了这样的内容:

<input type="hidden" name="<?php echo $token_id; ?>" value="<?php echo $token_value; ?>"

在提交表单后,他们会检查令牌是否匹配。

它如何帮助预防 CSRF?
当攻击者向用户发送恶意链接时,我感到很困惑,当用户点击它时,根据我的说法,令牌每次都会匹配。

【问题讨论】:

  • 顺便说一句:令牌不是防止 CSRF 的唯一方法。使用源头可以更容易:wiki.mozilla.org/Security/Origin
  • @Francois 感谢您指出这一点..我会尝试深入研究它:)
  • @brasofilo 感谢您对其进行编辑..您使它更具可读性..我会记住这些编辑区域,以便下次我寻求帮助时不会再犯这些错误: )
  • @shubham,很荣幸听到这个消息 :) 专业提示:使用浏览器拼写检查器,这样可以提高英语并减少错误发布问题。祝你好运!

标签: php csrf csrf-protection


【解决方案1】:

页面中的令牌必须与存储在 cookie(或会话)中的令牌相匹配。

设置 cookie 的站点知道该令牌值是什么,并且可以在表单中指定它。

第三方攻击者的站点无法知道该令牌值是什么,因此无法指定它。

您测试 cookie 中的令牌是否与表单数据中的令牌匹配,如果不匹配,您将作为 CSRF 拒绝请求。

【讨论】:

  • @Quentin 非常感谢。你的回答向我保证我是正确的。如果您可以阐明使用此方法的优势,或者您可以建议任何其他从 CSRF 保护脚本的好方法,那就更好了。
猜你喜欢
  • 2021-10-17
  • 2012-08-14
  • 2013-02-28
  • 2013-07-17
  • 2014-08-31
  • 2019-05-26
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
相关资源
最近更新 更多