php - 在 PHP 中过滤/清理电子邮件主题和正文

标签 php email phpmailer html-email sendmail

我正在使用 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/

相关文章:

php - PHP 中的并行处理

php - imap_open : couldn't open stream to my mail server

node.js - mailgun + node.js 的电子邮件模板

PHP while 使用 PHP Mailer 将内容循环到电子邮件中

php - 如何使用带有 DKIM 签名的 Phpmailer 发送电子邮件?

php - 我需要在 header ("Location: http://localhost/..."之后使用 exit 吗)?

php - 根据 Woocommerce 中的付款类型将新订单电子邮件发送到其他电子邮件地址

php - 对于那些似乎不适合作为 CodeIgniter 中的模型或库的页面特定小类该怎么办?

email - grails 中的异步邮件插件实现

PHPMailer - 无法验证