好吧,让我们假设我们有一个允许用户发表评论的表单。如您所知,“坏人”可以轻松地在PHP Curl的帮助下发送垃圾邮件。我如何保护我的网站免受包含captcha的情况?谢谢。保护网站免受PHP Curl post方法?
回答
最简单的方法是使用某种形式的验证码保护(reCaptcha),或让用户登录后才能发表评论(这实际上并不能防止垃圾邮件,但可以更轻松地对付通过阻止他们的帐户发送垃圾邮件)
除此之外,你还可以采取一些简单的预防措施,即。限制他们在特定时间范围内可以执行的评论数量 - 也许只有在超过此限制时才会显示验证码,以确定它们是否为人类(如此处所述)。
如果您的意思是“如何保护我的网站不被浏览器以外的程序访问”,则答案几乎是“您不能”。浏览器只是一个发送HTTP请求的程序。你可以玩尝试拒绝看起来不像浏览器的HTTP请求的游戏,但对于一个任意程序(使用curl或者Perl/Python/Ruby库)来模仿头文件是非常简单的“真实”的浏览器发送。
通常的作用是生成一个随机值并将其存储在用户的会话中。 当我输出表单时,我将这个值作为一个隐藏的输入。
当表单发布时,比较发布的值与会话中的值。每个值只能使用一次(因此在输出表单之前更改它)。
那些垃圾邮件通常不会存储cookie,这意味着当邮件被执行时,您没有当前会话 - >没有可比较的值,所以您知道发生了某些事情。如果他们确实发生了存储cookie的情况,他们会针对每个帖子的形式发生冲突,只有第一次提交才会成功。如果他们每次再次加载页面并解析表单,则此方法不起作用。但我认为没有办法来防止这种情况发生。
当然,这意味着您需要为您网站上的每位访问者分配会话,这也意味着存储Cookie。无论是那个还是一个验证码,我都不知道其他方法。
会话支持和表单检查很容易集成。当然,由于他们不会那么努力地尝试(有更低的悬挂水果),所以你会得到主要的垃圾邮件,但它不会成为真正的障碍。 – Wrikken 2010-08-04 10:02:12
+1滚球的一个很好的解决方案。 – 2010-08-04 10:03:07
@Wrikken如果有人想要模拟一个完整的浏览器,那么现实是不现实的 - 我猜这只是提高目标帖子。 – 2010-08-04 10:04:13
好吧,你可以尝试一下沿着包含有效sessionid的表单上的隐藏控件的行。此sessionid将在POST上进行验证,并且只有在它成功后,该帖子才有效。
这可以使用/不使用JavaScript。 jim
- 1. 如何保护网站免受xss(跨网站脚本)
- 2. 如何保护asp.net mvc 3网站免受url查询?
- 3. 如何保护网站免受DoS攻击
- 4. 针对cURL的保护网站?
- 5. 如何保护java.lang.Object的受保护方法免受子类攻击?
- 6. 如何保护我的网站免受注射(Cookie编辑)
- 7. 保护PHP免受MySQL注入
- 8. 如何保护网站免受恶意脚本侵害?
- 9. 如何保护网站免受黑客侵害?
- 10. 未受SSL保护的网站
- 11. 如何保护PHP免受背负?
- 12. 如何保护我的网站免受会话固定?
- 13. 如何保护我的网站免受瘙痒?
- 14. 受登录保护的网站部分
- 15. php密码保护网站
- 16. 受保护的方法
- 17. 保护网站免遭盗版
- 18. 网站上受保护的CSS?
- 19. 保护window.opener免受更改
- 20. 保护所有方面的php网站(和一般网站)
- 21. 保护网站
- 22. 保护你的网站的php文件的最佳方法
- 23. 保护我的网站
- 24. 保护COM接口免受例外
- 25. 网络保护ASP.NET网站
- 26. null列保护免受sql注入
- 27. 保护ASP.Net网站?
- 28. 保护网站的最佳方法和方法
- 29. 保护文件免受系统修改
- 30. 保护ECDH免受MITM攻击
即使capcha不是100%安全的,请参阅http://ejohn.org/blog/ocr-and-neural-nets-in-javascript/ – Sarfraz 2010-08-04 12:06:34
我知道,但[reCaptcha](http://www.recaptcha。 com)对于OCR攻击是非常安全的,甚至可以让盲人用户访问:p。 – wimvds 2010-08-04 12:24:25