在邮件功能的 php 手册页上,有一条用户评论说“注意防止标头注入”。
在我的应用程序中,我使用了 mail 函数,我用作函数参数的唯一用户输入是电子邮件地址。
我使用 regex 对电子邮件地址进行了初步检查^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$
。
这也会防止标头注入吗?
谢谢,
jr
在邮件功能的 php 手册页上,有一条用户评论说“注意防止标头注入”。
在我的应用程序中,我使用了 mail 函数,我用作函数参数的唯一用户输入是电子邮件地址。
我使用 regex 对电子邮件地址进行了初步检查^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$
。
这也会防止标头注入吗?
谢谢,
jr
有人会想注入这样的东西:
user_address@domain.com
抄送:spam_address1@domain.com、spam_address2@domain.com、spam_address3@domain.com
您不允许\r\n这是定义新标头信息所需的。所以你的应用程序是安全的。
仅当您将用户提供的内容放入邮件标头中时,标头注入才有风险。一个典型的例子是使用发布的电子邮件地址来设置回复标题。
这就是我使用的:
$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);