2011-10-05 25 views
0

简单问题:如何检测发布到我的网站的表单数据是通过cURL完成的,而不是通过网站的表单页面完成的。如何使用cURL检查帖子是否执行

(防爆)用户运行卷曲-H “主持人:http://mysite” POST “后的数据” http://mysite用于任何形式的网站。

由于可以设置引用者和用户代理,我相信他们不符合筛选条件。任何建议或解决方案,欢迎。

谢谢&干杯!

+2

不可能做到的? – Patrick87

回答

0

将令牌添加到您动态生成的表单并将其存储在用户会话中。当用户提交表单时,检查表单中的令牌与会话中的令牌相匹配。每次呈现表单时该标记都应该更改。这将允许表单只提交一次。

如果用户提交带有陈旧标记的表单,只需让他们重新发布表单,并在表单过期时发出错误消息,并且需要重新执行该操作。

Curl可以模拟浏览器,所以没有什么是100%有效的,但是这涵盖了大部分情况。

由于curl没有执行它,因此您也可以使用JavaScript填充此标记字段。

+0

荣誉......但如果它的任何匿名用户可以输入的形式或注册表格不认为我会运气..而像CAPTCHA这样的人类识别方法对我来说并不理想,因为我无法做出决定,甚至建议添加一个... – optimusprime619

+1

会话对匿名用户来说工作得很好,您无需对此方法进行验证即可使用。 – BeWarned

0

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

+0

不错的一个...但我可以通过禁用javascript并填写表单不会导致虚惊一场吗? – optimusprime619

+0

如果有人使用Javascript来检查表单,那么是的。也可以通过表单提交按钮将“&clicked = true”附加到表单发布数据。 – Romoku

0

我不确定你的安全问题,因为你不告诉我们。就Web服务器而言,cURL实际上只是另一种Web浏览器;它恰好是由命令行参数控制的,而不是鼠标。

也许你是关心保护自己从Cross-Site Request Forgery,应该看OWASP CSRF Prevention Cheat Sheet

+0

对不起,我的问题被抽象..有什么是我的一个朋友正在春季mvc工作,这个问题被提出说可能循环卷曲命中和淹没数据库注册页....我永远不会考虑一下,这可能是在我的PHP代码中......所以感觉好奇的是要问这个问题.. – optimusprime619

+1

Flood/DoS防护对客户端检测来说是一个完全不同的概念。理论上任何客户都可以尝试拒绝你。检测cURL在这里帮不了你。也许看看像apache httpd-guardian(或者类似于你选择的web服务器),它会阻止在特定时间段内发出太多请求的地址http://apache-tools.cvs.sourceforge.net/apache-tools/ – Cheekysoft

+0

true ...但在我的情况下,它有点太具体......也许是时候来结束这个问题,它变得非常模糊......感谢大家的答案,并提供深入的洞察力,并希望这个线程帮助/教育某人其他和我一样.. – optimusprime619

相关问题