用PHP过滤/清理电子邮件主题和正文

时间:2017-01-01 22:29:29

标签: php email phpmailer html-email sendmail

我使用PHPMailer发送电子邮件。

现在,我们都知道我们需要经常检查用户输入 但是电子邮件的主题和主体呢? (所以我不是指电子邮件)

需要消毒什么以及如何消毒?什么是(主要)漏洞?

我是否应该使用像HTMLPurifier这样的东西?因为我希望用户能够在那里标记电子邮件。或者我应该使用/编写可以使用的BB代码函数吗?

更新

邮件正文:
我现在使用带有ent_quotes标志的htmlspecialchars。在此之后,在消息上运行BB代码(jBBCode)解析器。这个看起来很安全。

主题:
我不使用任何验证/消毒/等。 (在主题字段上执行min和max strlen)。 测试了一些JavaScript,但看起来一切都还好。

我现在可以认为这是安全的吗? (P.。代码不会在电子邮件中的任何地方打印出来。)

2 个答案:

答案 0 :(得分:2)

是的,您需要在发送前清理用户输入。 HTMLPurifier和HTMLawed做了很好的消毒工作,但需要调整到不阻止有用的东西 - 两者都是谨慎的。只要你不需要复杂的布局,BBCode或markdown确实可以让事情更容易过滤。

答案 1 :(得分:0)

您可以使用

<?php
filter_var($body, FILTER_SANITIZE_FULL_SPECIAL_CHARS)

有助于防止特殊字符,您也可以使用RAW,例如

<?php
filter_var($body, FILTER_SANITIZE_RAW, FILTER_FLAG_ENCODE_HIGH)

详情可在此处找到 - &gt; https://secure.php.net/manual/en/function.filter-var.php