htmlspecialchars函数绕过

本文详细介绍了PHP的htmlspecialchars函数,用于防止跨站脚本攻击(XSS)。通过转换预定义的字符到HTML实体,该函数默认只编码双引号。然而,某些情况下,如设置flags参数为ENT_COMPAT,可以通过单引号来绕过防御。文章还探讨了double_encode参数的作用,并提供了可能的绕过方法。了解这些细节有助于提升Web应用的安全性。
摘要由CSDN通过智能技术生成

htmlspecialchars函数绕过

定义

把预定义的字符转换为 HTML 实体

语法

htmlspecialchars(string,flags,character-set,double_encode)

用法

预定义的字符
&:转换为&
":转换为"
':转换为成为 '
<:转换为&lt;
>:转换为&gt;

string:必需,规定要转换的字符串
flags :可选,规定如何处理引号、无效的编码以及使用哪种文档类型
character-set :可选,一个规定了要使用的字符集的字符串,如:UTF-8(默认)
double_encode :可选,布尔值,规定了是否编码已存在的 HTML 实体

flags参数可用的引号类型
ENT_COMPAT :默认仅编码双引号
ENT_QUOTES:编码双引号和单引号
ENT_NOQUOTES:不编码任何引号
注:xss-lab中有些关卡可以利用单引号绕过是因为flags参数默认只编码双引号

double_encode参数布尔值
TRUE:默认,将对每个实体进行转换
FALSE:不会对已存在的 HTML 实体进行编码

绕过方法

默认编码(仅编码双引号)

<?php 
	$name = $_GET["name"];
	$name_new = htmlspecialchars($name);
?>
<input type='text' value='<?php echo $name_new?>'>

利用单引号能够绕过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值