是否有可以使用的透明库或简单的东西,所以我可以使用Perl和Apache阻止cross-site request forgery (CSRF)?如何为表单生成令牌并在服务器端验证它们?
答案 0 :(得分:9)
看看CGI::Application::Plugin::ProtectCSRF的作用。该模块用于CGI :: Application框架。
为其他框架修改模块应该不会太难。 基本上,用户表单会使用生成的标记添加隐藏的HTML字段,并且会话对象将获得相同的标记。提交表单时,将表单提交的标记与会话对象(位于服务器上)中的标记进行比较。如果它们不匹配,可能会发生CSRF。
还有一个Catalyst插件:Catalyst::Controller::RequestToken
这些模块使用属性处理程序,因此现有应用程序只需要很少的修改。
答案 1 :(得分:1)
为了防止来自服务器端的“跨站点请求伪造”,最好:
这样做是特定于框架但很简单。