如何检查是否使用cURL执行发布

时间:2011-10-05 13:24:12

标签: forms validation curl security

简单问题:如何检测发布到我网站的表单数据是通过cURL完成的,而不是通过网站的表单页面完成的。

(Ex)用户针对网站中的任何表单运行 curl -H“主持人:http://mysite”POST“发布数据”http://mysite

由于可以设置Referer和User Agent,我相信它们不符合过滤条件。欢迎任何建议或解决方案。

谢谢&干杯!!

3 个答案:

答案 0 :(得分:0)

我想我们需要检查是否触发了表单提交按钮。

答案 1 :(得分:0)

向您动态生成的表单添加一个令牌,并将其存储在用户会话中。当用户提交表单时,检查表单中的令牌是否与会话中的令牌匹配。每次呈现表单时,此标记都应更改。这样,表格只能提交一次。

如果用户提交带有过时令牌的表单,只需让他们重新发布表单,并附上一条错误消息,说明表单已失效,他们需要再次重复操作。

Curl可以模拟浏览器,因此没有任何东西可以100%有效,但这涵盖了大多数情况。

您也可以使用JavaScript填充此令牌字段,因为curl不会执行它。

答案 2 :(得分:0)

我不确定您的安全问题是什么,因为您没有告诉我们。就Web服务器而言,cURL实际上只是另一个Web浏览器;它碰巧是由命令行参数而不是鼠标控制的。

也许您担心自己不受Cross-Site Request Forgery的影响而应该关注OWASP CSRF Prevention Cheat Sheet