【问题标题】:how to avoid bot attacks on form如何避免机器人对表单的攻击
【发布时间】:2011-03-17 02:16:08
【问题描述】:

【问题讨论】:

    标签: php html bots


    【解决方案1】:

    我认为您可以从Captcha's website 中阅读基本概念。 然后,用经典的 ASP 搜索验证码。

    之后您可能需要自己解决问题,因为我们看不到您的 ASP 页面的源代码。

    【讨论】:

      【解决方案2】:

      尝试在页面中放置一个空字段,通过 CSS 将其隐藏并检查它是否已填写。(也许旁边有一条说明,如果用户禁用了 CSS,则将其留空。)许多机器人会填写每个字段in,所以你可以检查这个字段是否为空。

      【讨论】:

      • 我想,随着它变得越来越广为人知,它的有效性将会下降。经典的猫捉老鼠。您可以做很多类似的事情,以在不使用验证码的情况下领先于垃圾邮件机器人。
      • @dreeves:确实是猫捉老鼠。但它目前有效,这真的很重要。 :) 有一天,机器人将能够读取验证码,但当它发生时我们会担心。
      • @casablanca 我敢肯定,那些读取 CAPTCHA 的机器人将在 2020 年首先在日本制造,它们看起来像类人生物,并且有生物相机(实际上是 Jeff Atwood 的眼球),可以看到 200 英寸的显示屏.他们还将能够以智能的方式填写表格,这样您就看不到它是由机器人完成的。除此之外,他们将能够切换 SIM 卡以更改其 IP 地址。如果发明了一种新的母语,他们可以立即对其进行解码。那是未来的垃圾邮件机器人。
      • 我的意思是3D display,所以他们可以同时填写数百万张表格。
      • 是的,可悲的是,永远不会有一种完美的技术来对抗垃圾邮件。垃圾邮件发送者与开发人员一样紧跟技术步伐。
      【解决方案3】:

      CAPTCHA 是最著名的解决方案,但如果您正在寻找简单的解决方案,我发现这非常有效:将表单的提交 URL 设置为空白(或无效)并通过JavaScript。到目前为止,我还没有看到一个执行 JavaScript 以获取过去表单的机器人。这确实意味着用户需要启用 JavaScript,但大多数人还是这样做了。

      例子:

      <form id="myform" action="" onsubmit="return doSubmit();">
      ...
      </form>
      
      <script type="text/javascript">
      function doSubmit() {
        // You can also do any validation here if required
        document.getElementById('myform').action = 'real_submit_url';
        return true;
      }
      </script>
      

      【讨论】:

      • 不要忘记用户体验:meta.stackexchange.com/questions/48840/…
      • 确实如此。然而,这是一种解决方法,而不是解决方案。在可用性方面,它甚至是一个交易破坏者。
      • 就我个人而言,我永远不会采用损害用户体验的解决方案。我宁愿把它吸干,然后接收垃圾邮件。
      猜你喜欢
      • 1970-01-01
      • 2011-04-25
      • 2020-05-12
      • 1970-01-01
      • 2011-01-13
      • 2013-08-09
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      相关资源
      最近更新 更多