很多人谈论实施CSRF以阻止网页上的跨站点攻击.但我认为破坏CSRF并向服务器发出请求非常容易.
您从一个页面开始,渲染一个表单并使用CSRF令牌保留一个隐藏字段.
提交表单时,其他页面将使用CSRF令牌以验证请求.
验证请求时,服务器将检查带有密码的CSRF令牌以查看令牌是否有效.
现在秘密本身存储在会话或cookie中.
这意味着如果我去网站,从网页复制CSRF令牌,从浏览器网络选项卡复制会话值.在此之后我可以构造一个CURL请求,设置这些值并尽可能多地发出请求.
那么CSRF的需求是什么?
您定义的方案不是CSRF.
你的场景爱丽丝去了鲍勃的网站.Alice从Bob的网站获取cookie.Alice使用该数据发出她为Bob的网站设计的请求.
这可以.这里发生的一切都在爱丽丝和鲍勃之间.
如果Bob不相信Alice发送好的数据,那么这完全是另一个问题.
CSRF场景爱丽丝去了鲍勃的网站.Alice从Bob的网站获取cookie.爱丽丝去了Mallery的网站.Mallery的网站触发向Bob的网站提交表单.Bob接受这些数据,因为它来自Alice的浏览器和Alice的cookie.
即Mallery的网站正在伪造Alice到Bob网站的请求.
反CSRF令牌旨在阻止Mallery通过Alice的浏览器发出请求(因为Mallery无法获取令牌以放入表单数据,因此无法匹配cookie中的令牌).