Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 卫生处理_Php_Phpmailer - Fatal编程技术网

Php 卫生处理

Php 卫生处理,php,phpmailer,Php,Phpmailer,问题很简单:在使用PHPmailer类时,我应该使用任何类型的消毒吗 我制作了一个简单的发送邮件表单,使用phpmailer类发送电子邮件。目前,我只使用“htmlspecialchars”进行消毒(aldough我读到没有必要这样做,但这些信息不是100%可靠) 我试图在标签之间发送一些js代码,但我不确定是否可以进行其他类型的攻击。我个人不信任任何输入,所以我对所有内容都进行了清理。例如,需要注意的一件事是,您可能正在使用htmlspecialchars,但如果有人使用非英语字符会发生什么?

问题很简单:在使用PHPmailer类时,我应该使用任何类型的消毒吗

我制作了一个简单的发送邮件表单,使用phpmailer类发送电子邮件。目前,我只使用“htmlspecialchars”进行消毒(aldough我读到没有必要这样做,但这些信息不是100%可靠)


我试图在标签之间发送一些js代码,但我不确定是否可以进行其他类型的攻击。

我个人不信任任何输入,所以我对所有内容都进行了清理。例如,需要注意的一件事是,您可能正在使用htmlspecialchars,但如果有人使用非英语字符会发生什么?您需要使用UTF-8作为参数来定义字符集

这一简单的遗漏(我决不是说您遗漏了它)可能会导致XSS攻击

我投赞成票。它是一个非常有名的安全库,允许您对输入进行比htmlspecialchars更高程度的清理


/0.02

在发送到phpMailer之前,您无需对任何内容进行消毒,除非检查输入的电子邮件地址是否有效

数据清理有两个原因:SQL注入和XSS或CSRF(Xross站点脚本或跨站点请求伪造) 在这两种情况下,用户都必须根据输入将某些内容视为输出

然而,您询问邮件类的卫生处理是件好事,因为在理想情况下,没有人会要求这样做。HTML标签?当然你可以发送HTML标签!您可以定义为
text/html

你需要消毒什么?

  • 附件类型!不管邮件如何,客户端攻击总是在附件中发现。仅允许以下mime类型:

    image/jpeg”、“image/pjpeg”、“image/gif”、“image/png”、“application/msword”、“application/vnd.ms office”、“application/vnd.openxmlformats of cedocument.wordprocessingml.document”、“application/vnd.openxmlformats of cedocument.wordprocessingml.template”、“application/vnd.openxmlformats of cedocument.spreadshetml.sheet”,“application/vnd.openxmlformats of icedocument.presentationml.presentation”,“application/pdf”

  • 不建议检查文件的扩展名!因为,邮件客户端可能会使用像get_file_contents()这样的函数,它只会在浏览器中打开文件,如果它是嵌入了JPEG扩展名的javascript,它仍然会执行!(在IE6/IE7中的确如此)然而,拥有强大的解析机制同样是浏览器的工作

  • 附件的大小
  • 确保您有大小限制

    漏洞可能在邮件中,也可能不在邮件中,邮件客户端必须处理它。然而,作为一个邮递员,你应该注意以下两件事


    希望有帮助:)

    SMTP头插入是一种风险,尤其是从电子邮件的主题行中删除任何控制字符,尤其是换行符。您可能还需要行包装您的电子邮件正文.Tnx以获取建议,但我认为这不会是一个问题,我不会使用SMTP发送邮件(只是通过phpmailer发送简单的php功能。此无需替换html代码,如:e like:script alert('run lola run'))/script实际上是这样。默认情况下,HTMLPurifier不允许使用脚本标记。在允许在筛选器中使用脚本之前,必须设置setTrusted(TRUE)。