这很令人困惑,因为它解决了 Web 浏览器的一个微妙漏洞。
假设我们有两个站点:site.com 和 evil.com。然后 evil.com 的所有者,如果他知道 site.com 网站的结构(如果他会使用,这很容易),就可以设置一个针对它的表单。
<form action="http://target.com/my_account/_delete" method="POST">
<input type="submit" value="Click Here for candy"></input>
</form>
任何点击它并登录到 site.com 的人都会立即触发链接到的操作(在这种情况下,销毁他们自己的帐户)。
csrf 令牌的想法是合法形式如下所示:
<form action="http://target.com/my_account/_delete" method="POST">
<input type="hidden" name="csrf_token" value="AEyaF8af8AIHJFA0L"></input>
<input type="submit" value="Don't click this unless absolutely sure!"></input>
</form>
并且因为这个值是用户特定的,并且只有网站知道并显示在网站上,所以用户现在是安全的,并且不能在没有先通过正确页面的情况下删除他们的帐户,因为攻击者的任何页面都不会知道这个值.
希望这更清楚。