【问题标题】:Does public contact form require a CSRF token?公共联系表是否需要 CSRF 令牌?
【发布时间】:2021-03-21 23:47:05
【问题描述】:

假设我们的网站上有一个公开的简单联系表。 FE 应用程序向 BE 服务发出请求,并在那里以某种方式进行处理。它不需要任何身份验证,因此每个人都可以提交请求,仅此而已。

当我查看OWASP doc here 时,上面的示例似乎不属于这种情况。 联系请求中没有经过身份验证的用户上下文,因此我看不到 CSRF 令牌可以阻止的任何攻击场景。

任何人都可以确认这种方法,或者提出一个 CSRF 有意义的攻击场景。

也许值得补充的是,我们不保留任何用户会话。我们有一个由 Nginx 提供的 SPA(在 Angular 中),并且我们仅使用无状态承载令牌进行身份验证(基于 SSO)与 BE 服务。 所以上面似乎是使用 CSRF 令牌的另一个障碍,因为我们没有在任何地方存储任何会话对象来验证 BE 中的 CSRF 令牌。 使用 cookie 将令牌传输到浏览器似乎在这里也无效,因为 Nginx 正在为应用程序提供服务,因此我们无法进行 cookie 附带的任何令牌验证。

【问题讨论】:

    标签: security csrf csrf-token


    【解决方案1】:

    你是正确 CSRF 仅当用户已通过身份验证并发送资源更改请求。

    由于不涉及身份验证,攻击者无法滥用用户权限做某事

    因为每个人都可以发送表格

    我能想到你可能需要 CSRF 保护 来为 公共表单 的唯一场景是当你添加一些 半身份验证 之类的用于检测 DDOS。例如:

    您使用一种机制来验证每个 IP 地址每天只能发送一个请求,而无需向他们询问验证码。

    因为您正在对它们进行半身份验证(一个用户不等于其他用户)。

    攻击者可能会使用 CSRF 攻击来通过您的 DDos 保护

    他/她可能会向网络发送恶意软件,每个节点都可以发送Form并取消基于IP(半授权)的应用程序级DDOS防护

    【讨论】:

    • 谢谢,我们已经有一个带有网络防火墙的 DDoS 保护,所以我们应该没问题
    猜你喜欢
    • 2015-05-14
    • 1970-01-01
    • 2011-09-18
    • 2012-09-26
    • 2019-12-30
    • 1970-01-01
    • 2019-07-12
    • 2013-07-21
    • 1970-01-01
    相关资源
    最近更新 更多