如何解决html_entity_decode的用例安全
我正在使用php收集表单数据并将其发送到电子邮件地址。我正在使用php filter_vars清理条目。照原样,这将在电子邮件的正文中返回编码的html。例如,我是变成I'm
$message = "";
$message = $_POST["message"];
$message = filter_var($message,FILTER_SANITIZE_STRING);
$message = wordwrap($message,70);
...
$Body .= $message;
$success = mail($EmailTo,$Subject,$Body,$headers);
我的问题是:如果我在$Body .= htmlspecialchars_decode($message)
之类的电子邮件中使用htmlspecialchars_decode,是否要撤消清理工作并重新打开漏洞?我将如何安全地将编码的html转换为html实体,以便我的客户可以阅读电子邮件?
解决方法
FILTER_SANITIZE_STRING
用于条形标签,可选地剥离或编码特殊字符。
因此,您只是剥离标签并编码其他内容。要不对引号进行编码,请使用过滤器标志FILTER_FLAG_NO_ENCODE_QUOTES
:
$message = filter_var($message,FILTER_SANITIZE_STRING,FILTER_FLAG_NO_ENCODE_QUOTES);
看看Sanitize Filters可以看到其他内容,例如未编码&
等。
不过,htmlspecialchars_decode($message)
应该没问题,因为您已经剥离了HTML标记,并且这只会解码其他实体,例如引号' "
,&符&
等。也就是说,您可以只需首先使用strip_tags($message)
即可将引号和与号分开。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。