对于任何 XSS 攻击,我一直使用简单htmlentities($_POST['string']);
的数据清理方法。最近我看到人们使用这个:
htmlentities($_POST['string'], ENT_QUOTES, 'UTF-8');
使用它的好处或目的是什么htmlentities()
。
也不知道它是否相关,但我总是在页面顶部使用元 UTF-8。
对于任何 XSS 攻击,我一直使用简单htmlentities($_POST['string']);
的数据清理方法。最近我看到人们使用这个:
htmlentities($_POST['string'], ENT_QUOTES, 'UTF-8');
使用它的好处或目的是什么htmlentities()
。
也不知道它是否相关,但我总是在页面顶部使用元 UTF-8。
ENT_QUOTES
如果数据被替换为 HTML 属性,则需要,例如
echo '<input type="text" value="' . htmlentities($string, ENT_QUOTES) . '">";
这可确保对引号进行编码,因此它们不会value="..."
过早终止该属性。
UTF-8
如果您的页面使用 UTF-8 字符集,则这是必需的,因为默认情况下使用 ISO-8859-1 编码。这些编码需要匹配,否则用户会看到奇怪的字符。
人们陈述字符编码和实体引号的原因是
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");
在整个声明中。
在过滤器中表达字符编码的主要原因是为了维护输入数据的帧引用。如果传输编码由于传输干扰或恶意传输数据包更改而改变,过滤器将用零填充丢失的数据。