【问题标题】:php mail header injection preventionphp邮件头注入预防
【发布时间】:2010-01-07 07:54:33
【问题描述】:

在邮件功能的php手册页上,有一条用户评论说“注意防止标头注入”。

在我的应用程序中,我使用了邮件函数,而我用作函数参数的唯一用户输入是电子邮件地址。

我使用正则表达式 ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$ 对电子邮件地址进行初步检查。

这是否也可以防止标头注入?

谢谢,
jrh

【问题讨论】:

    标签: php email header-injection


    【解决方案1】:

    有人会想注入这样的东西:

    user_address@domain.com
    抄送:spam_address1@domain.com、spam_address2@domain.com、spam_address3@domain.com

    您不允许 \r\n 这是定义新标头信息所需的。所以你的应用是安全的。

    【讨论】:

      【解决方案2】:

      仅当您将用户提供的内容放入邮件标头中时,标头注入才有风险。一个典型的例子是使用发布的电子邮件地址来设置回复标题。

      这是我用的:

      $email = preg_replace(array("/\r/i","/\n/i", "/%0a/i", "/%0d/i", "/Content-Type:/i", "/bcc:/i", "/to:/i", "/cc:/i", "/Content\-Transfer\-Encoding\:/i", "/Mime\-Version\:/i" ), "", $email); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-11
        • 2012-08-10
        • 2011-03-03
        • 2014-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多