我有点尴尬,因为我用PHP生成了一个邮件正文而没有转义变量.在HTML中,我正在使用htmlspecialchars()或类似函数,将它们用于命令行escapeshellarg(),但用于邮件?例如这样的事情:
<?php
$usercontent = $_GET['usercontent'];
mail("dummy@nowhere.tld", "My Subject", "My body with $usercontent included");
?>
像上面的脚本一样,潜在的攻击者该怎么办?我如何防范这种攻击?还是PHP mail()保存了,为什么?
更新
请参考示例:
>仅身体受到影响(无标题!)
>内容类型为文本/纯文本
>答案的一些证明会很好
> MTA是带有“ /usr/sbin / sendmail -t -i”的后缀sendmail
解决方法:
基本的电子邮件正文是纯文本.如果您想要不同的类型(例如HTML或分段消息),则需要使用MIME扩展名,并使用Content-Type(例如,对于HTML为text / html或对于分段消息为multipart /…)来指定类型.
因此,从安全角度来看,没有办法注入任何有害的东西(至少不是按照规范).即使缺少使用的字符编码的声明,即使非ASCII字符也应正确处理.
但是,电子邮件客户端中仍然可能存在一些漏洞,可以通过这种方式加以利用.但我对此表示怀疑.