htmlspecialchars()
将特殊字符转换为 HTML 实体,以防止 XSS(跨站脚本攻击)攻击
函数名称:htmlspecialchars()
函数说明:htmlspecialchars() 函数用于将特殊字符转换为 HTML 实体,以防止 XSS(跨站脚本攻击)攻击。
函数语法:htmlspecialchars(string $string, int $flags = ENT_COMPAT | ENT_HTML401, string|null $encoding = null, bool $double_encode = true): string
参数说明:
$string:必需,要转换的字符串。
$flags:可选,用于指定转换的规则。默认为 ENT_COMPAT | ENT_HTML401,表示将双引号转换为实体,其他特殊字符保持不变。可选的标志有:
ENT_COMPAT:默认值,仅将双引号转换为实体。
ENT_QUOTES:将双引号和单引号都转换为实体。
ENT_NOQUOTES:不转换任何引号。
ENT_HTML401:将字符转换为 HTML 4.01 实体。
ENT_XML1:将字符转换为 XML 1 实体。
ENT_XHTML:将字符转换为 XHTML 实体。
ENT_HTML5:将字符转换为 HTML 5 实体。
$encoding:可选,指定要使用的字符编码。默认为 null,表示使用当前脚本的字符编码。
$double_encode:可选,指定是否对已经转换的实体再次进行转换。默认为 true,表示转换两次。
返回值:返回转换后的字符串。
示例:
基本用法:
$str = 'This is a "quote" <tag>.';
$encoded_str = htmlspecialchars($str);
echo $encoded_str;
// 输出:This is a "quote" <tag>.
指定转换规则和字符编码:
$str = 'This is a "quote" <tag>.';
$encoded_str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
echo $encoded_str;
// 输出:This is a "quote" <tag>.
禁止对已转换的实体再次进行转换:
$str = 'This is a "quote" <tag>.';
$encoded_str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8', false);
echo $encoded_str;
// 输出:This is a "quote" <tag>.
注意事项:
htmlspecialchars() 函数只转换特殊字符,不会转换整个 HTML 标签,因此并不能完全阻止 XSS 攻击,仍然需要其他安全措施。
在输出用户输入的内容时,务必使用 htmlspecialchars() 函数进行转换,以避免潜在的安全风险。