我一直使用简单的htmlentities($_POST['string']);
来清除任何XSS攻击的数据。
最近我看到人们用这个:
htmlentities($_POST['string'], ENT_QUOTES, 'UTF-8');
仅使用htmlentities()
时的优势或目的是什么。
也不知道它是否相关,但我总是在页面顶部使用元UTF-8。
答案 0 :(得分:7)
ENT_QUOTES
,例如
echo '<input type="text" value="' . htmlentities($string, ENT_QUOTES) . '">";
这可确保对引号进行编码,因此它们不会过早终止value="..."
属性。
UTF-8
,因为默认情况下使用ISO-8859-1编码。这些编码需要匹配,否则用户会看到奇怪的字符。
答案 1 :(得分:0)
人们陈述字符编码并引用实体的原因是
the encapsulation characters ' and " are encoded (ENT_QUOTES)
and 'UTF-8' encoding flag expressed as:
htmlentities($_POST['string'], ENT_QUOTES, $encoding="UTF-8");
or
htmlentities($_POST['string'], ENT_QUOTES, "UTF-8");
在整个声明中。
在过滤器中表达字符编码的主要原因是要保持输入数据的帧参考。如果由于传输干扰或恶意的传输数据包更改而导致传输编码发生更改,则过滤器会将丢失的数据填充为零。