我正在使用 PHPMailer 发送电子邮件。
现在,我们都知道我们需要始终检查用户输入。
但是电子邮件的主题和正文呢? (所以我不是指电子邮件地址)
什么需要 sanitizer 以及如何 sanitizer ?什么是(主要)漏洞?
我应该为此使用 HTMLPurifier 之类的东西吗?因为我希望用户能够在那里标记电子邮件。或者我应该使用/编写一个可以使用的 BB 代码函数吗?
更新:
对于邮件正文:
我现在使用带有 ent_quotes 标志的 htmlspecialchars。在此之后,对消息运行 BB 代码 (jBBCode) 解析器。这个现在看起来很安全。
主题:
我不使用任何验证/ sanitizer /等。 (除了最小和最大 strlen)在主题字段上。
使用一些 javascript 进行了测试,但看起来一切正常。
我可以假设这现在是安全的吗? (P.s. 除了在电子邮件中,代码不会打印在其他任何地方。)
最佳答案
是的,您需要在发送前清理用户输入。 HTMLPurifier 和 HTMLawed 在清理方面做得很好,但需要进行调整以不阻止有用的东西——两者都过于谨慎。只要您不需要进行复杂的布局,BBCode 或 markdown 确实可以让事情更容易过滤。
关于php - 在 PHP 中过滤/清理电子邮件主题和正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41419591/