【问题标题】:How to secure the use of a PHP script that triggers emails?如何保护触发电子邮件的 PHP 脚本的使用?
【发布时间】:2012-07-18 16:22:05
【问题描述】:

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

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

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

触发要发送到 john@domain.com 的电子邮件。

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

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

我怎样才能保护对这个脚本的访问?

【问题讨论】:

  • 如果您允许用户为电子邮件指定To:,则电子邮件脚本被滥用以发送垃圾邮件。除了拥有允许地址的白名单,或者硬编码地址并仅发送到该地址之外,没有其他方法可以确保这一点。

标签: php security


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    第一步:当用户打开注册表,可以发送邮件并通过验证码时,设置$_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');
    }
    

    这样,用户一旦打开你的页面就可以发送邮件,但不能直接执行邮件脚本。

    【讨论】:

      【解决方案3】:

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

      • 仅允许链接对您确定不是机器人的经过身份验证的用户有效(验证码?)
      • 防止同一 IP 地址发出重复请求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-29
        • 1970-01-01
        • 2011-09-16
        • 2023-03-24
        • 1970-01-01
        • 2018-09-06
        相关资源
        最近更新 更多