XSS跨站脚本攻击之——html special chars()函数

XSS绕过之html special chars()函数

功能

htmlspecialchars()函数把一些预定义的字符转换为 HTML 实体。 预定义的字符是:
& (和号)成为 &amp
" (双引号)成为 &quot
’ (单引号)成为&#039
< (小于)成为 &lt
>(大于)成为 &gt

语法

该函数的语法:htmlspecialchars(string,flags,character-set,double_encode)

原理

过滤原理:htmlspecialchars() 函数把预定义的字符转换为 HTML
实体,从而使XSS攻击失效。但是这个函数默认配置不会将单引号和双引号过滤,只有设置了quotestyle规定如何编码单引号和双引号才能会过滤掉单引号
可用的quotestyle类型:
ENT_COMPAT - 默认。仅编码双引号
ENT_QUOTES - 编码双引号和单引号
ENT_NOQUOTES - 不编码任何引号
可使用以下语句绕过: q任何内容’ οnclick=‘alert(111)’

实例

再补充一个例子吧,分别对比一下就可以更直观的理解

代码
	<html>
 <body>
 <?php
 $str = "John & 'Adams'";
 echo htmlspecialchars($str, ENT_COMPAT);
 echo "<br />";
 echo htmlspecialchars($str, ENT_QUOTES);
 echo "<br />";
 echo htmlspecialchars($str,ENT_NOQUOTES);
 ?>
 </body>
 </html>
浏览器输出
	John & 'Adams'
 John & 'Adams'
 John & 'Adams'
在浏览器中查看源代码
	<html>
 <body>
 John &amp; 'Adams'<br />
 John &amp; &#039;Adams&#039;<br />
 John &amp; 'Adams'
 </body>
 </html>

案例参考这个网站 : http://yige.org/

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值