文章目录
- 一、什么是xss攻击
- 二、攻击类型
- 三、php相关处理函数
- 1、htmlspecialchars 函数
- 2、htmlentities 函数
- 3、strip_tags 函数
一、什么是xss攻击
xss攻击
通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码
到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript
,但实际上也可以包括php、VBScript、ActiveX、 Flash 或者甚至是普通的HTML。
二、攻击类型
-
存储型: 最直接的危害类型,跨站代码存储在服务器(数据库)。
-
反射型: 反射型跨站脚本漏洞,最普遍的类型。
- DOM型: DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。
三、php相关处理函数
1、htmlspecialchars 函数
将特殊字符转换为 HTML 实体
语法:
htmlspecialchars(
string $string,
int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
?string $encoding = null,
bool $double_encode = true
): string
选项参数:
string:待转换的字符串。
其他参数通常不需要,要用时可参考:htmlspecialchars 函数
字符替换变化:
字符 | 替换后 |
---|---|
& (& 符号) | & |
" (双引号) | " ,除非设置了 ENT_NOQUOTES |
' (单引号) | 设置了 ENT_QUOTES 后, ' (如果是 ENT_HTML401) ,或者 ' (如果是 ENT_XML1、 ENT_XHTML 或 ENT_HTML5)。 |
< (小于) | < |
> (大于) | > |
2、htmlentities 函数
本函数各方面都和 htmlspecialchars()
一样,除了 htmlentities()
会转换所有具有 HTML 实体的字符。
语法:
htmlentities(
string $string,
int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
?string $encoding = null,
bool $double_encode = true
): string
选项参数:
string:待转换的字符串。
其他参数通常不需要,要用时可参考:htmlentities 函数
3、strip_tags 函数
从字符串中去除 HTML 和 PHP 标签
语法:
strip_tags(string $string, array|string|null $allowed_tags = null): string
选项参数:
string:输入字符串。
allowed_tags:使用可选的第二个参数指定不被去除的标签列表。要么是 string,要么自 PHP 7.4.0 起是 array。
具体可参考:strip_tags 函数