Webforms CSRF 预防不起作用

Webforms CSRF prevention not working

使用 Webforms 4.5 和下面 link 中的代码来防止 CSRF 攻击。我们没有使用母版页,因此相同的代码包含在 Sitecore 基本布局中。

https://software-security.sans.org/developer-how-to/developer-guide-csrf

这似乎无法阻止 CSRF 攻击,因为我们在站点外部有一个脚本,它能够 post 操纵数据到站点。我们已将视图状态(从网页复制)添加到此脚本。

此 CSRF 预防代码将视图状态中设置的标记值与内存中的变量进行比较。 但是,由于我们的脚本包含视图状态,因此它包含视图状态变量,因此此代码不会产生错误,因为视图状态变量与内存中的变量匹配。

我希望这段代码能正常工作,因为它是 Web 表单母版页的一部分...知道为什么它对我们不起作用吗?

CSRF 攻击是一种只写攻击。例如,

  1. 黑客发送了一百万封电子邮件,其中包含 "image" 实际上链接到 https://www.SomeBank.com/Transfer?Amount=1000&ToAccount=HackersAccount

  2. 百万封电子邮件中有一定百分比被打开

  3. 打开电子邮件的部分用户也登录了 www.Somebank.com

  4. 当图像为 "retrieved" 时,电子邮件客户端实际上会向银行网站发送请求并转移资金。请求成功,因为 www.SomeBank.com 的 cookie 是随请求一起被动发送的。

CSRF token提供了一条不为黑客所知,也不知道的信息。当收到没有令牌的请求时,传输被拒绝。

如果黑客有权访问该页面,并且可以读取令牌,那么该机制将无法正常工作,如您所见。当然,如果他能访问页面,你的问题就更大了!