htmlspecialchars() 函数过滤XSS的问题
- 作者: 五速梦信息网
- 时间: 2026年03月19日 18:00
@$ip
= htmlspecialchars($_GET['ip']);今天看这个写法。 了解一下
htmlspecialchars 这个函数的功能 》 详细如下
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
预定义的字符是: |
| |
| |
| |
| |
<span style="background-color: rgb(248, 248, 248); color: rgb(51, 51, 51); font-family: "Courier New"; font-size: 0.8em; white-space: pre-wrap;">> (大于)成为 >
它的语法如下:
htmlspecialchars(string,flags,character-set,double_encode)
其中第二个参数flags需要重要注意,很多开发者就是因为没有注意到这个参数导致使用htmlspecialchars()函数过滤XSS时被绕过。因为flags参数对于引号的编码如下:
可用的引号类型:
- ENT_COMPAT - 默认。仅编码双引号。
- ENT_QUOTES - 编码双引号和单引号。
- ENT_NOQUOTES - 不编码任何引号。
默认是只编码双引号的!默认只编码双引号!默认只编码双引号……重要的事情说三遍!!!
如下面例子:
<?php
$name = $_GET["name"];
$name = htmlspecialchars($name);
?>
<input type='text' value=''> 轻松绕过:
加上ENT_QUOTES参数:
发现无法绕过了:
查看源代码:
单引号已经被转换了。
- 上一篇: 一个api 小程序的大致实现写法
- 下一篇: IPinfo 多接口IP查询工具源码
相关文章
-
一个api 小程序的大致实现写法
一个api 小程序的大致实现写法
- 技术栈
- 2026年03月19日
-
ThinkPHP 5.x远程命令执行漏洞 补丁
ThinkPHP 5.x远程命令执行漏洞 补丁
- 技术栈
- 2026年03月19日
-
微信开发之分清公众平台和开放平台、公众号全局凭证和网页授权凭证
微信开发之分清公众平台和开放平台、公众号全局凭证和网页授权凭证
- 技术栈
- 2026年03月19日
-
IPinfo 多接口IP查询工具源码
IPinfo 多接口IP查询工具源码
- 技术栈
- 2026年03月19日
-
编辑器或评论留言里面可以粘贴上传图片
编辑器或评论留言里面可以粘贴上传图片
- 技术栈
- 2026年03月19日
-
基于 openresty 的 web 应用防火墙 cheerwaf
基于 openresty 的 web 应用防火墙 cheerwaf
- 技术栈
- 2026年03月19日
