电子邮件标题注入 - 示例不起作用

时间:2011-11-21 21:15:55

标签: php email header code-injection

首先,这个问题是针对个人知识的,而不是针对任何类型的攻击:)希望你能相信我并给我一些提示。

我正在尝试重现我找到的邮件标题注入的示例(link-> http://www.phpsecure.info/v2/article/MailHeadersInject.en.php)。基本上它使用一个表单来获取3个参数(主题,邮件和发件人邮件),然后这些参数使用POST方法发送,并在php mail()函数中用于管理员的邮件。

一切正常,每封邮件都没有问题发送,但当我尝试注入其他参数如Cc,Bcc等时,技巧不起作用:\r& \n%0A& %0D被解释为CL和RF。例如,如果我将my@mail.com%0ACc:foo@bar.com放在“发件人”字段中,则在“my@mail.com”收件箱中我会找到邮件,其中包含与发送时相同的“发件人”字段({{1} })。 php或输入标签是否正确编码(或取消编码)输入?我怎样才能使它发挥作用?

希望你能理解我的坏英语,提前感谢,最好的问候。

ps:我链接的文章是2005年,最近我发现使用php函数“header()”修复了http标题的类似错误,所以我认为他们修复了电子邮件标题注入问题..但我在网上找不到任何证实这一点的内容。

______________________ EDIT ________________________________________

示例工作,修改php代码中的标题:

my@mail.com%0ACc:foo@bar.com

电子邮件已从foo@foo.com和bar@bar.com正确收到

示例无法正常工作(这是我希望在您的帮助下解决的问题): First example not working

Second example not working

一旦我用“发送”按钮发送邮件,只有foo@foo.com会收到电子邮件,并且在“来自”详细信息(邮件内)中我会找到(第一种情况){{1 }或(第二种情况)$to = "admin@mail.com"; $sub = "this is the subject"; $msg = "this is the message"; $header = "From: foo@foo.com"."\r\n"."Cc: bar@bar.com"; $if(mail($to, $sub, $msg, $header."\n")){ echo "sent"; }else{ echo "error"; }

1 个答案:

答案 0 :(得分:1)

我总是发现我需要同时使用\ r \ n才能正确发送标题。