2012-07-17 52 views
5

我构建了一个PHP脚本来发送电子邮件(基于Amazon SES)。如何确保触发电子邮件的PHP脚本的使用?

所以我可以做一个GET或POST Ajax调用我的PHP脚本:

envoi.php?nom=John&[email protected] 

触发被发送到[email protected]的电子邮件。

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

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

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

+4

如果您允许用户指定电子邮件的“收件人:”,则会滥用电子邮件脚本**将被滥用发送垃圾邮件。没有办法来保证这一点,除了有一个允许的地址白名单,或硬编码的地址,并只发送到。 – 2012-07-17 14:59:22

+0

http://php.net/manual/en/features.http-auth.php – ManseUK 2012-07-17 14:59:30

回答

3

第一步:当用户打开该登记表,从他可以发送邮件并通过验证码,设置一个$_SESSION参数。

$_SESSION["mail_allowed"] = true; 

第二步:请求被照常发送到

envoi.php?nom=John&[email protected] 

第三步:最后,在邮件脚本,做一些类似如下:

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

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

+0

有趣。谢谢。 – tucson 2012-07-18 07:29:52

4

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

1

是的,这很容易被滥用。有没有坚实的解决方案,但一对夫妇的方式来保护它浮现在脑海中:(?验证码)

  • 只允许链接的,你就一定不是机器人身份验证的用户工作
  • 防止同一IP来自发出重复请求的地址。