PHP htmlspecialchars()
用于将字符串中的特殊字符转换为HTML实体,以防止XSS攻击,保护HTML内容的安全性.
htmlspecialchars(string,flags,character-set,double_encode)
- string: 要转化的字符串
- flags: 可选,规定如何处理引号、无效编码以及使用哪种文档类型
- flags参数可用的引号类型: 默认值
ENT_COMPAT
- ENT_COMPAT :默认仅编码双引号。
- ENT_QUOTES:编码双引号和单引号。
- ENT_NOQUOTES:不编码任何引号。
- flags参数可用的引号类型: 默认值
- character-set: 可选,规定要使用的字符集的字符串,默认UTF-8
- doule_encode: 规定了是否编码已存在的HTML实体。默认true.
被htmlspecialchars认定为特殊字符的主要字符:
&
(和号): 转换为&
。"
(双引号):转换为"
'
(单引号): 转换为'
<
(小于号): 转换为<
>
(大于号): 转换为>
绕过方式:
- 使用不同的编码方式: htmlspecialchars默认会转义为不同HTML实体,但是不会处理所有字符编码方式。
- 使用unicode编码。unicode编码在html中会被解析为实际的字符。
- 十六进制编码: 一些浏览器支持十六进制字符,从而绕过htmlspecialchars()
- 使用双重编码:
- 通过不同字符集绕过