【发布时间】:2018-01-02 08:53:32
【问题描述】:
我正在学习哈希计算器课程。这是一个简单的 Web 应用程序,它在主页上包含两个提交表单,用户可以在其中提交哈希并获取文本并查看诗句。
尽管应用程序很简单,但它需要在其中实现安全功能。我设法减轻了 SQL 和 XSS 攻击。然后,我决定使用两个漏洞评估扫描程序“Acunetix”和“Nessus”。两个扫描器都显示我的应用程序容易受到 CSRF 的攻击,针对这种攻击的保护措施是在 PHP 中实现会话和随机令牌。
我已阅读有关此攻击及其作用的信息。但是,由于这种攻击主要针对已经过身份验证的用户和 cookie,我感到非常困惑,所以我的问题是?我是否需要将会话和令牌嵌入到我的应用程序中以简单地返回和恢复哈希和明文?如果是,我为什么要这样做以及周围有哪些潜在威胁?
非常感谢!
【问题讨论】:
-
CSRF 保护确实是一种确保任何请求都来自您的表单的方法(因此没有人可以从其他地方发布到您的后端)。如果没有 CSRF,任何人都可以将您的后端与他们自己的前端一起使用。所以实际上,如果你关心这个,添加 CSRF。如果您不关心是否有人从他们自己的站点/脚本向您的后端发帖,那么您不需要 CSRF。
-
@MagnusEriksson Anti-CSRF 无法防止 MitM/代理。
-
@user2864740 当然不是。不只有一种保护可以保护您免受一切侵害。但在这样的应用程序中,我认为中间人攻击真的不是什么大威胁。
-
@MagnusEriksson “没有 CSRF,任何人都可以将你的后端与他们自己的前端一起使用。” - Anti-CSRF 不会解决这个问题(MitM/proxy),所以这仍然是可能的。
-
请参阅CSRF 以获得良好的一般性阅读。 CSRF 的基本问题是它允许(由于用户使用具有保留的 cookie 和身份验证等的同一浏览器)一个精心制作的请求 - “调用不需要的操作” - 假设当前会话-state(通常这是一个“登录”的帐户,尽管它会影响所有会话状态)。如果没有会话状态,则 CSRF 甚至不适用。