繁体   English   中英

保护网站免受PHP Curl发布方法的侵害?

[英]Protect website against PHP Curl post method?

好的,让我们假设我们有一个允许人们发表评论的表格。 如您所知,“坏人”可以借助PHP Curl轻松向我发送垃圾邮件。 如何保护我的网站免受不包含验证码的攻击? 谢谢。

如果您的意思是“如何保护我的网站免受浏览器以外的程序的访问”,答案几乎是“您不能”。 浏览器只是发送HTTP请求的程序。 您可以玩尝试拒绝看起来好像不是来自浏览器的HTTP请求的游戏,但是对于任意程序(使用curl或Perl / Python / Ruby库的程序)来说,模仿标头很简单。 “真实”浏览器发送。

通常有效的方法是生成一个随机值并将其存储在用户会话中。 输出表单时,我将此值添加为隐藏输入。

发布表单后,将发布的值与会话中的值进行比较。 每个值只能使用一次(因此请在输出表单之前进行更改)。

这些垃圾邮件浏览器通常不存储cookie,这意味着在执行发布时,您没有当前会话->没有可比较的值,因此您知道正在发生某些事情。 如果确实要存储Cookie,它们将反对更改每个帖子的表单,只有第一个提交成功。 如果他们每次都再次加载页面并解析表单,则此方法不起作用。 但是我认为没有办法防止这种情况的发生。

自然,这意味着您需要为站点上的每个访问者分配会话,这也意味着存储cookie。 它是那样还是验证码,我不知道其他方式。

好吧,您可以尝试对包含有效sessionid的表单进行隐藏控制。 此sessionid将在POST上验证,并且只有成功,该帖子才有效。

这可以使用/不使用javascript。 吉姆

最简单的方法是使用某种形式的验证码保护(reCaptcha)或让用户在发表评论之前登录(这实际上并不能阻止垃圾邮件,但是通过阻止其帐户,可以更轻松地对垃圾邮件发送者采取措施) 。

除此之外,您还可以采取一些简单的预防措施,例如。 限制他们可以在特定时间范围内执行的评论数量-并且可能仅在超过此限制时显示验证码才能确定它们是人为的(例如此处的SO)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM