我使用PHPMailer发送电子邮件。
现在,我们都知道我们需要经常检查用户输入 但是电子邮件的主题和主体呢? (所以我不是指电子邮件)
需要消毒什么以及如何消毒?什么是(主要)漏洞?
我是否应该使用像HTMLPurifier这样的东西?因为我希望用户能够在那里标记电子邮件。或者我应该使用/编写可以使用的BB代码函数吗?
更新
邮件正文:
我现在使用带有ent_quotes标志的htmlspecialchars。在此之后,在消息上运行BB代码(jBBCode)解析器。这个看起来很安全。
主题:
我不使用任何验证/消毒/等。 (在主题字段上执行min和max strlen)。
测试了一些JavaScript,但看起来一切都还好。
我现在可以认为这是安全的吗? (P.。代码不会在电子邮件中的任何地方打印出来。)
答案 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