如何防止跨站请求伪造攻击?

时间:2016-09-01 09:18:44

标签: apache perl csrf csrf-protection cgi-application

我们在产品上运行了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>

1 个答案:

答案 0 :(得分:3)

我可以理解您发现CGI::Application::Plugin::ProtectCSRF的文档不清楚:它有点坚不可摧

Perl模块似乎要做的就是向每个名为hidden的HTML表单添加_csrf_id字段,并从各种源派生一个随机值并通过SHA1编码。当客户端的响应要求必须将相同的值返回给服务器时,保护就会出现

编码很好,但是它使用自定义子例程属性,而attributes pragma的文档说明了这个

  

警告:此处描述的机制仍处于试验阶段。不要依赖当前的实现

我无法从快速回顾中看出子程序原型是否对模块至关重要,但我建议您使用Apache mod_csrf模块,这可能比Perl模块进行更彻底的测试,并且有适当的文件