Cha*_*hak 5 apache perl csrf cgi-application csrf-protection
我们在我们的产品上运行Burp Suite并发现了一些安全漏洞。该工具检测到一些易受跨站请求伪造攻击 (CSRF) 攻击的 CGI 文件。
像往常一样,我在 CPAN 上搜索 CSRF 保护模块并找到了CGI::Application::Plugin::ProtectCSRF。
我想知道如何以通用方式将此模块集成到我们的应用程序中?我不清楚文档。如何配置此模块并进行最小更改以确保整个应用程序免受 CSRF 的影响。
我还遇到了mod_csrf(一个防止 CSRF 的 Apache 模块)。在 apache 配置文件中安装此模块和设置是否足以防止 CSRF?
<VirtualHost>
CSRF_Enable on
CSRF_Action deny
CSRF_EnableReferer off
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
由于我们使用的是内部服务器,而不是 apache,因此 mod_csrf 无法实现。
由于文档不清楚,我放弃了 ProtectCSRF 模块。
我通过执行以下操作解决了这个问题:
创建一个 JavaScript 函数并将其绑定到 onload 事件。该 JS 函数执行以下任务:
a) 在当前页面查找表单
b) 如果找到表单,则创建一个隐藏的“输入”元素并将其附加到每个表单
c) 获取放入 header 中的值并将其分配给上面创建的元素
d) 现在所有表单都有一个隐藏的输入元素,其中包含来自第 1 点的 CSRF 令牌
现在,每当提交表单时,这个隐藏元素也将被提交,我们正在服务器端验证其值。如果令牌不匹配,则存在 CSRF,我们会抛出错误并阻止请求