如何使用 Perl 和 Apache 防止跨站点请求伪造?
是否有任何我可以使用的透明库或简单的库,以便我可以防止 跨站点请求伪造(CSRF ) 使用 Perl 和 Apache? 如何为表单生成令牌并在服务器端验证它们?
Are there any transparent library that I can use or something easy so I can prevent cross-site request forgery (CSRF) with Perl and Apache? How can I generate tokens for forms and validating them server-side?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看看 CGI::Application::Plugin::ProtectCSRF< /a> 确实如此。 该模块适用于 CGI::Application 框架。
为其他框架修改模块应该不会太难。
基本上,用户表单获得一个隐藏的 HTML 字段,其中添加了生成的令牌,并且会话对象获得相同的令牌。 提交表单时,会将表单提交的令牌与会话对象(位于服务器上)中的令牌进行比较。 如果它们不匹配,则可能发生了 CSRF。
还有一个 Catalyst 插件: Catalyst::Controller::RequestToken
这些模块使用属性处理程序,因此只需对现有应用程序进行很少的修改。
Have a look at what CGI::Application::Plugin::ProtectCSRF does. This module is for the CGI::Application framework.
It shouldn't be too hard to modify the module for other frameworks.
Basically, user forms get a hidden HTML field added with the generated token, and the session object gets the same token. When the form is submitted, the form-submitted token is compared to the token in the session object (which is on the server). If they don't match, a CSRF has likely occurred.
There is also a Catalyst plugin: Catalyst::Controller::RequestToken
These modules use attribute handlers so there is very little modification required to your existing app.
为了防止服务器端的“跨站点请求伪造”,最好:
这样做是特定于框架的,但很简单。
To protect from "Cross-site request forgery" from server side, it is best to:
Doing this is framework specific but simple.