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/

发布了80 篇原创文章 · 获赞 8 · 访问量 4228

猜你喜欢

转载自blog.csdn.net/weixin_43079958/article/details/105336409