我如何保护我们的网站免受电子邮件订阅垃圾邮件的影响


How can I protect our site from email subscription spamming?

我们的网站有用于服务启动通知的电子邮件输入字段。我们不将此用于时事通讯,仅用于通知。因此,我测试了我们的网站的基本漏洞,发现我们的电子邮件列表中充斥着垃圾邮件地址。

我有这样的php代码来防止垃圾邮件,但仍然有一些问题:(我有html表单、电子邮件输入和必需的复选框输入)

if(isset($_POST['submitbutton'])){
    if(filter_var($_POST['emailinput'], FILTER_VALIDATE_EMAIL) && isset($_POST['checkbox'])){
        $email = $_POST['email'];
        @file_put_contents('../outofpublicrootdir/emaillist.txt', $email . ";'n'r", FILE_APPEND);
        $mailnotifysend = 'You have been added to our notify list!';
    }
}

你能帮帮我吗?

答案就是简单地使用captchahttp://www.google.com/recaptcha/intro/

您还可以使用一些名为"email"等的字段,并将它们隐藏在css中,然后在php中检查是否已填充。如果已填充,则忽略提交。

为了100%确保您允许所有正确的电子邮件使用基于RFC的Regex,您可以在这里找到

虽然captcha可以减少垃圾邮件,但它肯定也会减少合法注册。

相反,您可以使用一些简单而不引人注目的步骤。

  • 重命名html中的表单字段-命名电子邮件字段"名字"或类似的,并有另一个名为"电子邮件"的字段你用css隐藏(不要让它type=hidden,因为这是一个赠品针对垃圾邮件机器人)

  • 创建一个随机令牌,通过ajax调用将其保存到$_SESSION中,将其放入一个隐藏字段,并在提交时确认它们匹配-通用垃圾邮件机器人很少解析javascript

您可以在输入通知电子邮件时尝试使用验证键。例如,生成一个随机代码,然后用户应该在提交电子邮件之前正确填写代码。您还应该将此功能添加到代码中。