security - 公共联系表是否需要 CSRF 令牌?
问题描述
假设我们的网站上有一个公开的简单联系表。FE 应用程序向 BE 服务发出请求,并在那里以某种方式进行处理。它不需要任何身份验证,因此每个人都可以提交请求,仅此而已。
当我在这里查看 OWASP 文档时,上面的示例似乎不属于这种情况。联系请求中没有经过身份验证的用户上下文,因此我看不到 CSRF 令牌可以阻止的任何攻击场景。
任何人都可以确认这种方法或提出 CSRF 有意义的此类攻击的场景。
也许值得补充的是,我们不保留任何用户会话。我们有一个由 Nginx 提供的 SPA(在 Angular 中),并且我们仅使用无状态承载令牌进行身份验证(基于 SSO)与 BE 服务。所以上面似乎是使用 CSRF 令牌的另一个障碍,因为我们没有在任何地方存储任何会话对象来验证 BE 中的 CSRF 令牌。使用 cookie 将令牌传输到浏览器似乎在这里也无效,因为 Nginx 正在为应用程序提供服务,因此我们无法进行 cookie 附带的任何令牌验证。
解决方案
你是对的CSRF 只有在用户通过身份验证并发送资源更改请求时才进行交易。
由于不涉及身份验证,攻击者不能滥用用户权限来做某事。
因为每个人都可以发送表格
我能想到的唯一一种情况,您可能需要针对公共形式的CSRF 保护是当您添加一些半身份验证(例如检测 DDOS)时。例如:
您使用一种机制来验证每个 IP 地址每天只能发送一个请求,而无需向他们询问验证码。
因为您正在对它们进行半身份验证(一个用户不等于其他用户)。
攻击者可能会使用 CSRF 攻击来通过您的 DDos 保护
他/她可能会向网络发送恶意软件,每个节点都可以发送表单并取消基于 IP 的应用程序级 DDOS 防护(半身份验证)
推荐阅读
- python - Django Rest Framework 使用 value_list 序列化 fetchedn 的查询集
- javascript - JS应该动态生成元数据/整个页面吗?
- error-handling - 如果我的机器人没有权限,我希望它发送错误消息
- android - 将房间数据库的 AsyncTask 替换为 Rxjava
- java - 设置两个单独的图像视图的图像
- python - python中的SQL输出-如何将数据框中的所有元组转换为字符串
- c++ - 在 C++ 中重放函数调用
- python-3.x - backtrader 打印数据提要 vaues 不打印小时和分钟,默认为
- git - 上传使用 git clone 复制的项目的一部分
- arrays - 将一组输入映射到另一个数组