WEB漏洞-XSS跨站脚本漏洞解决方案

一、测试过程

通过手工测试,构造用户可控参数访问,发现网站部分页面对用户可控参数未做过滤限制,存在XSS跨站脚本漏洞,测试如下:

POST /task/notepad/insertNotepad HTTP/1.1
Host: www.xxx.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Referer: https://www.xxx.com/task/notepad/add
Content-Length: 280
Content-Type: multipart/form-data; boundary=---------------------------2637079957471
Cookie: JSESSIONID=7BCE4FAD0E3F0ED2A285AF37461DA424
DNT: 1
Connection: close

-----------------------------2637079957471
Content-Disposition: form-data; name="notepadType"

1
-----------------------------2637079957471
Content-Disposition: form-data; name="notepadContent"

test"/><imG src=1 onerror=alert(1)>
-----------------------------2637079957471--

在这里插入图片描述以下测试跨站脚本漏洞,注入图片,注入弹框,打开页面效果图:
在这里插入图片描述

二、风险分析

攻击者可能利用本漏洞对网站的访问者进行恶意攻击,例如窃取访问者的Cookies或者进行“钓鱼”欺骗,严重威胁访问者的安全利益等问题,该漏洞风险等级为高。

三、修复建议

跨站脚本攻击漏洞危害程度极高,建议对所有可允许用户输入数据的数据点进行防护。常用的修补方式为在服务端禁止或者转义用户提交数据中的HTML代码。

白名单限制:对站内所有用户提交的数据使用白名单限制,将用户提交的数据规定在限定的字符。

黑名单限制:使用黑名单限制,过滤或转义用户提交数据中的特殊符号,如尖括号(<、>)、斜杠(/)、半角圆括号((、))、半角引号(”)、半角单引号(’)、等号(=)、半角空格,也要注意常用HTML中常用到的script、div、img、src、iframe、onmouseover、onmousemove等。使用黑名单限制要格外注意用户提交的数据出现在SCRIPT脚本中而不需要特殊的字符便可执行的情况。

四、解决方法

在服务器添加过滤器,转义用户提交的数据,教程如下。

解决教程: 使用过滤器防止SQL注入XSS脚本注入

有些朋友会问,为什么一定要在服务器做处理,前端判断就可以啦。其实攻击者不是直接在您的网站页面中进行注入,而是构造可控参数进行访问,直接绕过前端判断语句,所以前端可做,服务器必须做!

五、测试效果

加入过滤器过滤特殊符号后,再进行测试(如下图),漏洞修复成功!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ii950606/article/details/112306929