好的,假设我们有一个允许人们发表评论的表单。如您所知,“坏人”可以在 PHP Curl 的帮助下轻松地向我发送垃圾邮件。如何保护我的网站免受不包括验证码的影响?谢谢你。
4 回答
如果你的意思是“我如何保护我的网站不被浏览器以外的程序访问”,答案几乎是“你不能”。浏览器只是一个发送 HTTP 请求的程序。您可以尝试拒绝看起来不是来自浏览器的 HTTP 请求,但是对于任意程序(使用 curl 或 Perl/Python/Ruby 库的程序)来说,模仿一个“真正的”浏览器发送。
通常有效的是生成一个随机值并将其存储在用户的会话中。当我输出表单时,我将此值添加为隐藏输入。
发布表单时,将发布的值与会话中的值进行比较。每个值只使用一次(所以在输出表单之前更改它)。
那些垃圾邮件程序通常不存储 cookie,这意味着当发布帖子时,您没有当前会话 -> 没有可比较的价值,所以您知道发生了什么事。如果他们碰巧存储了 cookie,他们会遇到每个帖子都更改的表单,并且只有第一次提交会成功。如果他们每次都重新加载页面并解析表单,则此方法不起作用。但我认为没有办法防止这种情况发生。
当然,这意味着您需要为网站上的每个访问者分配会话,这也意味着存储 cookie。它要么是验证码,要么是验证码,我不知道其他方式。
好吧,您可以尝试在包含有效 sessionid 的表单上隐藏控件。此 sessionid 将在 POST 上得到验证,并且只有成功后,该帖子才有效。
这可以使用/不使用javascript。吉姆
最简单的方法是使用某种形式的验证码保护 (reCaptcha) 或让用户在发布评论之前登录(这实际上并不能防止垃圾邮件,但通过阻止垃圾邮件发送者的帐户可以更容易地对垃圾邮件发送者采取行动) .
除此之外,您还可以采取一些简单的预防措施,即。限制他们在特定时间范围内可以执行的评论数量 - 并且可能仅在超过此限制时才显示验证码以确定他们是人类(就像这里一样)。