有没有一种方法可以100%防止php邮件脚本被滥用


Is there a way to 100% prevent a php mail script from being abused?

我搜索了SO,找到了几个好主意,但没有什么能100%解决我遇到的php邮件问题。

注意:当我从服务器上删除此文件时,垃圾邮件就会停止。此外,Captcha并不是一个真正的选择,这是一个Ajax调用,它需要快速。我不能100%确定垃圾邮件发送者是怎么做的,但任何帮助都将不胜感激

以下是添加到表单中的HTML部分:

<input name="spam_stopper" value="DO NOT CHANGE THIS VALUE" style="display:none;"/>

以下是我在mail.php文件顶部添加的没有阻止垃圾邮件的附加代码:

if ($_POST['spam_stopper'] != 'DO NOT CHANGE THIS VALUE') {
        echo '<h3>Incorrect use of this form!</h3>';
        exit;
}

if(!strpos($_SERVER['HTTP_REFERER'],'my-sample-domain-name.com'))
{
        echo '<h3>Incorrect use of this form!</h3>';
        exit;
}
if($_SERVER['REQUEST_METHOD'] != "POST"){
   echo("Unauthorized attempt to access page.");
   exit;
}

您允许通过POST提交您自己的表单进行访问。因此,如果我一直在您自己的网站上使用JavaScript提交表单,比如使用Firebug,那么有什么能阻止我呢?

您应该在每次发送邮件请求时附带一个一次性有效令牌,以确保您的表格不能多次提交,即使是从您自己的网站提交。