如何防范 CSRF

How to protect against CSRF

如何保护我的网站免受跨站请求伪造攻击? 我正在访问 "normal" 网站。 (f.e.normal.php) 它会在后台加载我已经登录的另一个网站 (f.e.victim.php/send_comment)。 网站用JS填充victim.php的评论框,自动发送请求。

在网络上,我总能找到使用令牌来对抗 CSRF 的技巧。但在此示例中,网站 normal.php 将在加载其他网站时获得令牌。 我误解了令牌的工作原理吗?如果不是,我怎样才能阻止我的网站接受这个请求?

CSRF 的整体理念是,如果没有您访问过的上一个页面的令牌,您无法获得victim.php/send_comment

您从初始登录到到达那里形成了一个 "chain" 请求,其中每个请求都由前一个请求授权 - 除非您拦截登录页面,否则应该无法伪造请求。

最简单和最安全的方法就是使用一个为您处理 CSRF 的网络框架。手工操作可能没有必要,而且容易出错。