【发布时间】:2017-03-06 22:43:42
【问题描述】:
我在php的官方文档中阅读了以下关于mail()函数的评论:
虽然没有记录,但对于参数 $to 和 $subject,mail() 函数至少将 \r 和 \n 更改为空格。因此,这些参数对于注入额外的标头是安全的。但是您可能需要检查 $to 是否有逗号,因为这些分隔多个地址,并且您可能不想发送给多个收件人。
正确吗?另外,我一直认为$message参数是安全的,不会被注入,是不是也正确?
我知道如何保护自己免受注射,我只是想知道我是否可以避免过滤这些参数。
【问题讨论】:
-
取决于您所说的注入。如果您让用户为接收者提供值,那么他们当然可以提供任何他们想要的值。
-
@SamiKuhmonen 不,我的意思是注入额外的标头(电子邮件注入漏洞)。
-
@ĐàoMinhHạt 这不是重复的,我知道如何保护自己免受注射,我只是想知道我是否可以避免过滤这些参数。
-
如果你对 C 足够熟悉并遵循逻辑,你可以在这里看到确切的替换:lxr.php.net/source/xref/PHP-MASTER/ext/standard/mail.c#284