running
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
一、XSS 漏洞原理
XSS是最常见的Web应用程序安全漏洞之一,攻击者通过向网页注入恶意脚本,当其他用户浏览该页面时,恶意脚本就会被执行,可能导致:
- Cookie值窃取
- 会话劫持
- 页面内容篡改
- 重定向到恶意网站
二、防御方案及代码实现
对输入进行过滤与验证
适用场景:用户提交数据前(如评论、文章内容、用户名)
// 过滤评论中的危险标签(如<script>、<iframe>)
$comment = $_POST['comment'];
$clean_comment = strip_tags($comment, '<p><a><strong><em>'); // 只允许保留安全标签
strip_tags:用于从字符串中去除 HTML 和 PHP 标签,可选择保留指定的安全标签。
对输出进行转义
适用场景:将用户输入内容输出到HTML页面时
// 普通文本输出(所有特殊字符转换为 HTML 实体,使用 UTF-8 编码)
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
// 在HTML属性中输出
<input value="<?= htmlspecialchars($user_input, ENT_QUOTES,'UTF-8') ?>">
三、bp扩展自动化测试XSS
以XSS靶场第三关为例(修改未使用htmlspecialchars函数和使用htmlspecialchars函数)
1、未使用htmlspecialchars函数
使用burpsuite抓包-->intruder模块-->添加变量
设置payload
设置settings,找到grep-march添加一个值(都行)。
bp扩展XSS Validator-->grep phrase 修改值为上面设置的值(111)
攻击,显示1的payload是可以使用XSS漏洞的。
验证,右击找到request in browser-->in original session
复制网址后浏览就有弹窗出现,说明执行成功。
2、使用htmlspecialchars函数
用一样的方法发现没有XSS漏洞。
对比之后我们可以知道htmlspecialchars函数可以用来防御XSS漏洞。
四、XSS Validator工具的安装
Phantomjs下载地址:http://phantomjs.org/download.html
下载后配置环境变量,把bin目录下的Phantomjs.exe加入到环境变量中。
xss.js下载地址:https://github.com/nVisium/xssValidator
两个都下载完成后,将xss.js放在phantomjs.exe同一个文件夹下。
在这个目录下打开终端输入:phantomjsxss.js(执行之后不要关闭窗口)burpsuite里安装这个插件,安装完就可以使用了。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)