Php 防止来自人类/机器人的垃圾邮件

Php 防止来自人类/机器人的垃圾邮件,php,spam,Php,Spam,这些天来,我一直在努力防止我的注册表单中出现垃圾邮件。我不想仅仅阻止它从机器人(使用蜜罐等)进入,而是当一个真正的人编写一个为我的网站设计的脚本,用虚拟注册填充我的数据库时(我不想使用captcha)。关于这一点,我有以下几点需要实施: 检查电子邮件地址是否存在(不仅有效)。我已经了解到,如果有大量请求,您可能会被禁止。此外,脚本可能包含有效的电子邮件地址(例如,当一所大学提供的学生电子邮件略有不同时) 另一种解决方案是比较IP请求的IP/TimeION,并且在相同IP提供大量注册请求的情况下,

这些天来,我一直在努力防止我的注册表单中出现垃圾邮件。我不想仅仅阻止它从机器人(使用
蜜罐
等)进入,而是当一个真正的人编写一个为我的网站设计的脚本,用虚拟注册填充我的数据库时(我不想使用captcha)。关于这一点,我有以下几点需要实施:

  • 检查电子邮件地址是否存在(不仅有效)。我已经了解到,如果有大量请求,您可能会被禁止。此外,脚本可能包含有效的电子邮件地址(例如,当一所大学提供的学生电子邮件略有不同时)

  • 另一种解决方案是比较IP请求的IP/TimeION,并且在相同IP提供大量注册请求的情况下,将用户视为垃圾邮件发送者。为此,您可以设置一个阈值,您可以将该注册请求视为垃圾邮件。这里的问题是脚本可能会找到阈值(例如,1秒),并每1.1秒发送一次请求。此外,有人可能使用洋葱路由(?),我将无法禁止他

    3.你怎么看待随机输入的名字

    那么,在这种情况下,哪些实践被认为是足够好的

    谢谢

    更新

    我发送带有激活确认链接的电子邮件,但我为用户提供了在不激活其帐户的情况下使用该网站约4天的功能!我不想在第一步我的数据库有垃圾邮件帐户

    解决方案



    对于所有感兴趣的人,我使用了蜜罐和临时数据库!它似乎工作得很好!谢谢

    您还可以创建一个临时注册数据库,如果有人在注册后24小时内验证电子邮件,他/她的数据将移动到主注册数据库。如果电子邮件未经用户验证,则每个条目将在24小时内被删除。

    您还可以创建一个临时注册数据库,如果有人在注册后24小时内验证电子邮件,其数据将移动到主注册数据库。如果电子邮件未经用户验证,则每个条目都将在24小时内被删除。

    要验证电子邮件地址,您可以发送一封带有验证链接的确认电子邮件,用户应单击该链接以确认这是他的电子邮件地址,而不是引导

    要验证电子邮件地址,您可以发送一封带有验证链接的确认电子邮件,用户应单击该链接以确认这是他的电子邮件地址,而不是引导

    对OP Update的回应:如果您需要为用户提供在X天内不点击激活链接而使用站点的选项,您也可以在电子邮件中(或单独)发送一组两个4位数(或6位数,但不安全)的PIN码并让他们将其用作临时密码,直到通过原始电子邮件链接激活该帐户。在您的数据库中,您会注意到PIN是否被使用,这表明它是否是垃圾邮件帐户。它甚至可以是一次性使用PIN。

    作为对OP更新的响应:如果您需要为用户提供在X天内不点击激活链接而使用站点的选项,您也可以在电子邮件中发送一组两个4位(或仅6位,但不安全)PIN码(或单独发送)并让他们将其用作临时密码,直到通过原始电子邮件链接激活该帐户。在您的数据库中,您会注意到PIN是否被使用,这表明它是否是垃圾邮件帐户。它甚至可以是一次性PIN。

    将验证码添加到注册表中?@Ashalynd我讨厌他们作为用户,所以我不希望他们出现在我的注册表单中!)@ThemisBeris的可能重复项您是在这里创建新的电子邮件地址还是验证现有的电子邮件地址?@ThemisBeris我会按照下面的评论()做,并要求他们收到一封带有验证链接的电子邮件。你是在寻找编码方面的帮助还是仅仅是想法?将captcha添加到注册表中?@Ashalynd我讨厌他们作为用户,所以我不希望他们出现在我的注册表中!)@ThemisBeris的可能重复项您是在这里创建新的电子邮件地址还是验证现有的电子邮件地址?@ThemisBeris我会按照下面的评论()做,并要求他们收到一封带有验证链接的电子邮件。你是在寻找编码方面的帮助还是仅仅是想法?我不希望用户首先打开他们的电子邮件,只要立即登录即可!我也不希望数据库首先被垃圾邮件攻击。同样的想法是,只让他们点击一个链接,要么a)给他们一些登录方法(PIN?),要么b)在第二个页面(或者甚至是注册页面,如果你小心的话)上使用javascript,执行一些检查,看看它是否真的是人工输入。检查服务器端验证的按键,检查鼠标点击等。这不是防弹的,但它应该可以显著减少您收到的任何垃圾邮件。是的!这就是我最终要做的,而且似乎工作得很好!谢谢你的把戏!我很高兴这有帮助。我对这个解决方案的具体实现很感兴趣,请随时给我发一条@trick消息。developer@gmail.com进一步讨论。我不希望用户首先打开他们的电子邮件,请立即登录!我也不希望数据库首先被垃圾邮件攻击。同样的想法是,只让他们点击一个链接,要么a)给他们一些登录方法(PIN?),要么b)在第二个页面(或者甚至是注册页面,如果你小心的话)上使用javascript,执行一些检查,看看它是否真的是人工输入。检查服务器端验证的按键,检查鼠标点击等。这不是防弹的,但它应该可以显著减少您收到的任何垃圾邮件。是的!这就是我最终要做的,而且似乎工作得很好!谢谢你的把戏!我很高兴这有帮助。我对您的这个解决方案的具体实现很感兴趣,请随时给我发一封电子邮件