如何确保使用触发电子邮件的PHP脚本?

时间:2012-07-17 14:57:56

标签: php security

我构建了一个PHP脚本来发送电子邮件(基于Amazon SES)。

所以我可以对我的PHP脚本进行GET或POST Ajax调用:

envoi.php?nom=John&email=john@domain.com

触发将电子邮件发送至john@domain.com。

我的网站有一个注册表单,在提交时对PHP脚本进行jquery ajax调用(网站和PHP脚本在同一台服务器上)。我也将脚本用于其他事件。

现在我担心如果有人抓住它的URL,这个脚本显然会被滥用。

如何保护对此脚本的访问权限?

3 个答案:

答案 0 :(得分:4)

您可以使用captcha来保护对此脚本的访问,并使滥用行为更加困难。

答案 1 :(得分:3)

第1步:当用户打开注册表单时,他可以从中发送邮件并通过验证码,设置$_SESSION参数。

$_SESSION["mail_allowed"] = true;

第2步:请求照常发送到

envoi.php?nom=John&email=john@domain.com

第3步:最后,在邮件脚本中,执行以下操作:

if($_SESSION["mail_allowed"]){
    $_SESSION["mail_allowed"] = false;
    //send mail  
}
else{
    die('File cannot be executed directly');
}

这样,用户可以在打开页面后发送邮件,但不能直接执行邮件脚本。

答案 2 :(得分:1)

是的,这很容易被滥用。没有可靠的解决方案,但有几种方法可以保护它:

  • 只允许该链接适用于您确定不是机器人的验证用户(验证码?)
  • 防止相同的IP地址发出重复的请求。