Php 使用随机名称字段作为输入来对抗垃圾邮件

Php 使用随机名称字段作为输入来对抗垃圾邮件,php,spam-prevention,ddos,Php,Spam Prevention,Ddos,我正在考虑在登记表中使用随机输入的名字。可以这样做: 用户请求注册表单站点 为输入字段创建随机名称,并将其保存到用户会话中 呈现表单并将其显示给用户 我只是想知道这种方法是否给了我什么。如果会话驱动程序是一个cookie-它是 加密和安全最好的方式使用第三方库,我认为这是足够的保存。如果用户除了cookies之外没有其他信息,我可以拒绝注册。 为了消除Cookie的潜在安全风险,我可以将会话存储在数据库中。这似乎更安全,但也可能使服务器过载(?。 我的问题很简单。实现这样的功能有什么意义吗?标准

我正在考虑在登记表中使用随机输入的名字。可以这样做:

  • 用户请求注册表单站点
  • 为输入字段创建随机名称,并将其保存到用户会话中
  • 呈现表单并将其显示给用户
  • 我只是想知道这种方法是否给了我什么。如果会话驱动程序是一个cookie-它是 加密和安全最好的方式使用第三方库,我认为这是足够的保存。如果用户除了cookies之外没有其他信息,我可以拒绝注册。
    为了消除Cookie的潜在安全风险,我可以将会话存储在数据库中。这似乎更安全,但也可能使服务器过载(?。

    我的问题很简单。实现这样的功能有什么意义吗?

    标准方法是有一个隐藏的文本字段。这是一个type=text的字段,但是应用了CSS规则,因此它是不可见的

    标记:

    <input type="text" name="put_some_innocuous_name_here" class="some_innocuous_css_class_name_here" value="" />
    
    PHP:

    其工作方式非常简单。普通用户永远不会看到隐藏的文本字段,因为CSS规则会将其隐藏。因此,真正的用户永远不会填写它

    然而,大多数Spambot并不知道CSS。他们只是解析表单标记,然后看到一个似乎需要填写的文本字段。因此,他们用一些随机数据填充字段。因为填写了一个普通用户永远不会看到的表单字段,这意味着您可能正在处理一个机器人


    不要为此使用input type=hidden,因为大多数spambot足够聪明,可以注意到它们并忽略它们

    尝试根据已知的垃圾邮件发送者列表检查IP,这非常有效。很好的例子将是和。我两个都试过了,他们减少了我的垃圾邮件发送者机器人注册量。

    有点晚了,但我创建了一个类文件,它完全满足您的需要,您可以找到它。 您只需要通过函数示例传递表单的名称

    <input type="text" name="<?php echo $obj->DynamicName("fieldName")?>"/>
    

    验证码不足以对付他们?如果你的表单只有一个输入字段并且总是发布到一个固定的URL,像我这样的坏人会在你的表单和表单中填充文本框。提交给你。哈哈。有些机器人会填写所有字段,所以随机命名也没用。但是,如果您填写了无意义的字段(例如,一个隐藏的无用字段),您就知道它不是人类。验证码很烦人,很容易被机器人传递。PHP会话依赖于cookie,因此会话数据的存储方式并不重要。一些机器人现在可以模拟web浏览器。这意味着他们实际上加载了您的表单,并填写文本字段,然后发布表单。他们现在不仅仅是盲目地提交url,我相信显示:无;会让一切变得毫无意义。您必须提供可见性:隐藏;左边距:-1000px;
    
    if ((isset ($_POST ['put_some_innocuous_name_here']))
    && ($_POST ['put_some_innocuous_name_here'] != ''))
    {
        throw new Exception ('Suspected bot!');
    }
    
    <input type="text" name="<?php echo $obj->DynamicName("fieldName")?>"/>