php - 如何保护我们的网站免受电子邮件订阅垃圾邮件的侵害?

时间:2014-09-10 09:30:59

标签: php email spam-prevention

我们的网站有服务启动通知的电子邮件输入字段。我们不会将此用于简报,仅用于通知。所以我测试了我们网站的基本漏洞,发现我们的电子邮件列表填满了垃圾邮件地址。

我有这种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!';
    }
}

你能以某种方式帮助我吗?

3 个答案:

答案 0 :(得分:1)

答案就是使用验证码,例如http://www.google.com/recaptcha/intro/

你也可以使用一些名为" email"等等,然后将它们隐藏在css中,然后检查php是否填写如果是,那么忽略提交。

要100%确定您允许所有正确的电子邮件使用基于RFC的Regex,您可以找到here

答案 1 :(得分:1)

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

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

  • 在html中重命名表单字段 - 将电子邮件字段命名为 “名字”或类似名称,并有另一个名为“电子邮件”的字段,即 你用css隐藏(不要让它类型=隐藏,因为这是一个赠品 用于食物垃圾箱)

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

答案 2 :(得分:0)

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