【问题标题】:Webforms CSRF prevention not workingWebforms CSRF预防不起作用
【发布时间】:2017-08-01 09:42:22
【问题描述】:

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

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

这似乎并不能防止 CSRF 攻击,就好像我们在站点之外有一个脚本,它能够将操纵的数据发布到站点。我们已向此脚本添加了视图状态(从网页复制)。

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

我希望此代码能够作为 Web 表单母版页的一部分工作......您知道为什么它不适合我们吗?

【问题讨论】:

    标签: security webforms csrf csrf-protection


    【解决方案1】:

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

    1. 黑客发送了 100 万封电子邮件,其中包含实际链接到 https://www.SomeBank.com/Transfer?Amount=1000&ToAccount=HackersAccount 的“图像”

    2. 百万封电子邮件中的一部分已打开

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

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

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

    如果黑客可以访问该页面,并且可以读取令牌,则该机制不起作用,如您所见。当然,如果他可以访问该页面,您的问题就更大了!

    【讨论】:

    • 谢谢约翰。我明白你在说什么,但我帖子中链接的代码将 ViewState 值与内存中的值进行了比较。如果黑客在他们的 html 中有 ViewState 值,那么他们将能够使用该 html 发布到站点.. 看不到链接到代码的代码如何防止这种情况
    • 没错。 CSRF 缓解措施不能防止黑客不受限制地访问页面内容。它只保护您免受能够从浏览器提交盲请求的黑客的攻击。如果他们可以访问该页面,那么这场战斗就已经失败了,这就是为什么没有 XSS 保护 CSRF 保护是无用的。
    猜你喜欢
    • 2019-06-09
    • 1970-01-01
    • 2014-12-13
    • 2012-01-06
    • 2019-12-22
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多