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); 

我的问题是:如果我在电子邮件中使用 htmlspecialchars_decode $Body .= htmlspecialchars_decode($message),我是否会撤消清理并重新打开漏洞?我将如何安全地将编码的 html 转换为 html 实体,以便我的客户可以阅读电子邮件?


繁华开满天机
浏览 106回答 1
1回答

潇湘沐

FILTER_SANITIZE_STRING用于剥离标签,可选择剥离或编码特殊字符。所以你只是剥离标签并编码其他东西。要不对引号进行编码,请使用过滤器标志FILTER_FLAG_NO_ENCODE_QUOTES:$message = filter_var($message, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);但是,htmlspecialchars_decode($message)应该没问题,因为您已经删除了 HTML 标签,这只会解码其他实体,如引号' "、& 符号&等。话虽这么说,您可以strip_tags($message)首先使用将引号和 & 符号单独保留的位置。
打开App,查看更多内容
随时随地看视频慕课网APP