Php 没有';在给打印的邮件发送电子邮件时没有任何安全漏洞,是吗?

Php 没有';在给打印的邮件发送电子邮件时没有任何安全漏洞,是吗?,php,email,code-injection,Php,Email,Code Injection,对不起,这可能有点像一个无趣的问题 这种代码没有任何安全漏洞,是吗?我到处都在使用它,但我想确保我没有留下漏洞 $body = print_r($_POST, true); mail($to, $subject, $body, $headers, "-f $from_address"); 如注释中所示,您永远不能信任任何用户输入。利用漏洞的一些可能性可能是: 嵌入指向钓鱼网站的链接 使用特洛伊木马向电子邮件添加附件 创建1GB的大型电子邮件 您应该妥善保管$头文件和$发件人地址,因为这些文件

对不起,这可能有点像一个无趣的问题

这种代码没有任何安全漏洞,是吗?我到处都在使用它,但我想确保我没有留下漏洞

$body = print_r($_POST, true);
mail($to, $subject, $body, $headers, "-f $from_address");

如注释中所示,您永远不能信任任何用户输入。利用漏洞的一些可能性可能是:

  • 嵌入指向钓鱼网站的链接
  • 使用特洛伊木马向电子邮件添加附件
  • 创建1GB的大型电子邮件

您应该妥善保管
$头文件
$发件人地址
,因为这些文件很容易被攻击

此外,如果您
打印包含HTML的变量,您将通过电子邮件发送包含HTML的字符串。尽管电子邮件可能以纯文本形式发送,但如何解释和显示这些字符串仍取决于电子邮件客户端。因此,您不能简单地假设没有安全漏洞。

不,这不安全

但你可能会侥幸逃脱,因为你需要其他设置糟糕的系统让黑客通过

详细信息

电子邮件的“正常”安全问题是众所周知的:始终检查进入邮件头的任何内容,以防止邮件头插入;最简单的方法是删除新行字符(如果发送了,则拒绝:表示有人进行了黑客攻击/测试)。这不是你提出的问题

但是,过去SMTP注入存在一些黑客行为:您可以通过明智地使用句号(句号)和%0D%0A(CRLF)以及MAIL TO:命令来终止SMTP邮件并启动新邮件。SMTP邮件本身以句号结尾:添加起来相当简单。看这里:还有

对此有防御措施:例如,SMTP服务器可以配置为不允许链接,并将所有服务器视为一个。所以希望你是安全的。但可以肯定的是,看看你能不能脱光衣服。并将%0D%0A(CRLF)转换为%0A以帮助消除风险(但请检查最后一项:您的结果可能会有所不同,并且可能不适用)

为了完整性,也有XSS注入的可能性(即包括链接),但除非您遵循链接,否则这是无害的。Web客户端可能会自动将纯文本链接转换为可点击的链接:我不知道如何利用这一点,但总有一种方法:因此,如果你担心的话,请检查链接

只有在您发送多部分电子邮件且用户/黑客知道边界分隔符的情况下,才能向现有电子邮件添加附件(如一个答案中所建议的);因此,随机生成边界分隔符或发送纯文本(不是多部分)以避免这种情况

如果您有正确的环境,就有可能运行Javascript。与附件一样,如果您发送的是多部分邮件,则可以使用边界分隔符创建HTML部分;因此,随机更改HTML标记的边框分隔符和vet。如果您使用的web客户端允许以纯文本形式发送javascript,那么您需要一个新的web客户端(我真的怀疑是否有)

这些是我能很快想到的


最简单的解决方案:使用库。众所周知的库就是为了避免这些问题而设计的。您还可以通过检查源代码以及它们如何处理来获得更多建议。是我当前选择的库。

如果$\u帖子包含密码字段,那么通过电子邮件发送它就是以明文形式发送该信息。。。。有一个安全漏洞我会说不,因为你正在把它转换成字符串。嗯,
print\u r()
不执行任何类型的转义,也不执行任何类型的转义,
mail()
,所以是的,我想有创意的人可能会在里面注入一些奇怪的字符,导致一些你不想看到的事情。我敢肯定,在某些(大多数?)设置中,可以欺骗邮件队列看到两个单独的项目,这意味着您可以将新的
标题设置为:
标题,并将其用作垃圾邮件网关。永远不要信任输入。@D.Kasipovic“转换为字符串”从安全角度看并不意味着什么——特别是在PHP中,字符串只是一系列没有约束的二进制字节。来自用户输入的任何内容都不应该被认为是安全的,无论在什么情况下,你应该正确地清理和验证你将要使用的数据,以避免以后不必要的头痛。谢谢,但我不一定要考虑那些漏洞。所有这些在代码上下文中似乎都是允许的。我更感兴趣的是潜在的缓冲区溢出和邮件功能劫持之类的事情。我知道很多人都表示从不相信用户输入,我也明白,我只是在寻找一个纯粹的技术安全漏洞。既然还没有人能提供更好的东西,我很可能会奖励你。另一个安全方面是跨站点请求伪造。攻击者可以嵌入图像,使您的邮件阅读器或浏览器向其他站点发出请求。有关此缺陷的更多详细信息,请访问