我正在使用 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 实体,以便我的客户可以阅读电子邮件?
1 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
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)
首先使用将引号和 & 符号单独保留的位置。
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消