【问题标题】:Protect website against PHP Curl post method?保护网站免受 PHP Curl 发布方法的侵害?
【发布时间】:2010-08-04 09:54:55
【问题描述】:

好的,假设我们有一个允许人们发布他们的 cmets 的表单。如您所知,“坏人”可以在 PHP Curl 的帮助下轻松地向我发送垃圾邮件。如何保护我的网站免受不包括验证码的影响?谢谢。

【问题讨论】:

    标签: php post curl protection


    【解决方案1】:

    如果您的意思是“我如何保护我的网站不被浏览器以外的程序访问”,答案几乎是“您不能”。浏览器只是一个发送 HTTP 请求的程序。您可以尝试拒绝看起来不是来自浏览器的 HTTP 请求,但是任意程序(使用 curl 或 Perl/Python/Ruby 库的程序)很容易模仿“真正的”浏览器发送。

    【讨论】:

    • 问题不在于这个,Sarfraz。
    • @hey 答案就在那里:“你不能”。就是这样。
    • @hey:如你所知,“坏人”可以借助 PHP Curl 轻松地向我发送垃圾邮件。
    • 答案是肯定的,我可以。例如,如果我使用了验证码,但没有它,我还能保护我的网站吗?我猜你没有得到我的问题。
    • @hey:在这种情况下,即使是验证码也不是 100% 安全的,请参阅 ejohn.org/blog/ocr-and-neural-nets-in-javascript
    【解决方案2】:

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

    发布表单时,将发布的值与会话中的值进行比较。每个值只使用一次(所以在输出表单之前更改它)。

    这些垃圾邮件机器人通常不存储 cookie,这意味着在执行发布时,您没有当前会话 -> 没有可比较的值,因此您知道发生了一些事情。如果他们碰巧存储了 cookie,他们会遇到每个帖子都更改的表单,并且只有第一次提交会成功。如果他们每次都重新加载页面并解析表单,则此方法不起作用。但我认为没有办法防止这种情况发生。

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

    【讨论】:

    • 会话支持和表单检查很容易集成。当然,你可以让主要的垃圾邮件机器人避开,因为他们不会那么努力(有较低的悬而未决的果实),但它不会成为真正的障碍。
    • @Wrikken 现实一点,如果有人想模仿完整的浏览器,你无论如何也赢不了——我猜这只是为了提高目标职位。
    • 嗯,这在很大程度上取决于那些“坏人”,他们只是垃圾邮件机器人还是有怨恨的精明人?我坚持我的第一条评论:是的,你会得到一些主要的垃圾邮件程序,但这就像锁上门,但把钥匙放在垫子下面。
    【解决方案3】:

    最简单的方法是使用某种形式的验证码保护 (reCaptcha) 或让用户在发布 cmets 之前登录(这实际上并不能防止垃圾邮件发送,但通过阻止垃圾邮件发送者更容易采取行动他们的帐户)。

    除此之外,您还可以采取一些简单的预防措施,即。限制他们在特定时间范围内可以执行的 cmets 数量 - 并且可能仅在超过此限制时才显示验证码以确定他们是人类(就像这里一样)。

    【讨论】:

    【解决方案4】:

    好吧,您可以尝试在包含有效 sessionid 的表单上设置隐藏控件。此 sessionid 将在 POST 上得到验证,并且只有成功后,该帖子才有效。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 2012-03-03
      • 1970-01-01
      相关资源
      最近更新 更多