跨站点请求伪造


Cross site request forgery

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

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

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

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

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

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

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

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