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 攻击是一种只写攻击。例如,
黑客发送了一百万封电子邮件,其中包含 "image" 实际上链接到 https://www.SomeBank.com/Transfer?Amount=1000&ToAccount=HackersAccount
百万封电子邮件中有一定百分比被打开
打开电子邮件的部分用户也登录了 www.Somebank.com
当图像为 "retrieved" 时,电子邮件客户端实际上会向银行网站发送请求并转移资金。请求成功,因为 www.SomeBank.com
的 cookie 是随请求一起被动发送的。
CSRF token提供了一条不为黑客所知,也不知道的信息。当收到没有令牌的请求时,传输被拒绝。
如果黑客有权访问该页面,并且可以读取令牌,那么该机制将无法正常工作,如您所见。当然,如果他能访问页面,你的问题就更大了!
使用 Webforms 4.5 和下面 link 中的代码来防止 CSRF 攻击。我们没有使用母版页,因此相同的代码包含在 Sitecore 基本布局中。
https://software-security.sans.org/developer-how-to/developer-guide-csrf
这似乎无法阻止 CSRF 攻击,因为我们在站点外部有一个脚本,它能够 post 操纵数据到站点。我们已将视图状态(从网页复制)添加到此脚本。
此 CSRF 预防代码将视图状态中设置的标记值与内存中的变量进行比较。 但是,由于我们的脚本包含视图状态,因此它包含视图状态变量,因此此代码不会产生错误,因为视图状态变量与内存中的变量匹配。
我希望这段代码能正常工作,因为它是 Web 表单母版页的一部分...知道为什么它对我们不起作用吗?
CSRF 攻击是一种只写攻击。例如,
黑客发送了一百万封电子邮件,其中包含 "image" 实际上链接到
https://www.SomeBank.com/Transfer?Amount=1000&ToAccount=HackersAccount
百万封电子邮件中有一定百分比被打开
打开电子邮件的部分用户也登录了
www.Somebank.com
当图像为 "retrieved" 时,电子邮件客户端实际上会向银行网站发送请求并转移资金。请求成功,因为
www.SomeBank.com
的 cookie 是随请求一起被动发送的。
CSRF token提供了一条不为黑客所知,也不知道的信息。当收到没有令牌的请求时,传输被拒绝。
如果黑客有权访问该页面,并且可以读取令牌,那么该机制将无法正常工作,如您所见。当然,如果他能访问页面,你的问题就更大了!