我阅读了this tutorial,它提供了一个很好的解释,以防止CSRF,但它仍然从我的脑中消失。根据方法一中的本教程,他们在每个请求中包含一个随机令牌。因此,他们在表格中包含了类似的内容:
<input type="hidden" name="<?php echo $token_id; ?>" value="<?php echo $token_value; ?>"
在提交表单后,他们正在检查令牌是否匹配。
如何帮助预防CSRF?
当攻击者向用户发送恶意链接时,我很困惑,当用户点击它时,根据我的说法,令牌每次都会匹配。
答案 0 :(得分:6)
页面中的标记必须与存储在cookie(或会话)中的标记相匹配。
设置cookie的网站知道该标记值是什么,并可以在表单中指定它。
第三方攻击者的网站无法知道该标记值是什么,因此无法指定它。
您是否测试Cookie中的令牌是否与表单数据中的令牌匹配,如果他们不将您的请求拒绝为CSRF。