这是参考这个(优秀的)答案。他指出,在 PHP 中转义输入的最佳解决方案是调用mb_convert_encoding,然后调用html_entities。
但是为什么你会用相同的参数(UTF8)调用 mb_convert_encoding 呢?
摘自原始答案:
即使您在 HTML 标记之外使用 htmlspecialchars($string),您仍然容易受到多字节字符集攻击向量的攻击。
最有效的方法是使用 mb_convert_encoding 和 htmlentities 的组合,如下所示。
$str = mb_convert_encoding($str, 'UTF-8', 'UTF-8'); $str = htmlentities($str, ENT_QUOTES, 'UTF-8');
这有什么我缺少的好处吗?