我们在产品上运行了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>
答案 0 :(得分:3)
我可以理解您发现CGI::Application::Plugin::ProtectCSRF
的文档不清楚:它有点坚不可摧
Perl模块似乎要做的就是向每个名为hidden
的HTML表单添加_csrf_id
字段,并从各种源派生一个随机值并通过SHA1编码。当客户端的响应要求必须将相同的值返回给服务器时,保护就会出现
编码很好,但是它使用自定义子例程属性,而attributes
pragma的文档说明了这个
警告:此处描述的机制仍处于试验阶段。不要依赖当前的实现
我无法从快速回顾中看出子程序原型是否对模块至关重要,但我建议您使用Apache mod_csrf
模块,这可能比Perl模块进行更彻底的测试,并且有适当的文件