建设局网站公示的规划意味着什么,做没用的网站,昆明网站建设优化技术,angularjs 做电商网站文章目录 XSS简介什么是XSS?分类反射型存储型 XSS(cross site script)跨站脚本攻击攻击场景解决方案 XSS简介
跨站脚本( cross site script )为了避免与样式css(Cascading Style Sheets层叠样式表)混淆#xff0c;所以简称为XSS。
XSS是一种经常出现在web应用中的计算机安全… 文章目录 XSS简介什么是XSS?分类反射型存储型 XSS(cross site script)跨站脚本攻击攻击场景解决方案 XSS简介
跨站脚本( cross site script )为了避免与样式css(Cascading Style Sheets层叠样式表)混淆所以简称为XSS。
XSS是一种经常出现在web应用中的计算机安全漏洞 也是web中最主流的攻击方式。
什么是XSS?
XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点进而添加一些代码嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。
从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
分类
反射型
反射型xss攻击( Reflected XSS)又称为非持久性跨站点脚本攻击它是最常见的类型的XSS。漏洞产生的原因是攻
击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个带XSS攻击向量的链接( 即每次攻击需要用户的点击)。
存储型
存储型XSS (Stored XSS)又称为持久型跨站点脚本它一般发生在XSS攻击向量 (一般指XSS攻击代码)存储在网站数据库当一个页面被用户打开的时候执行。每当用户打开浏览器脚本执行。持久的XSS相比非持久性XSS攻击危害性更大因为每当用户打开页面查看内容时脚本将自动执行。谷歌的orkut 曾经就遭受到XSS。
两种类型实现的结果完全相同不同的是前者需要点击后者存在于网页的数据库内
XSS(cross site script)跨站脚本攻击攻击场景
攻击者可以通过构造URL注入JavaScript、VBScript、ActiveX、HTML或者Flash的手段利用跨站脚本漏洞欺骗用户收集Cookie等相关数据并冒充其他用户。通过精心构造的恶意代码可以让访问者访问非法网站或下载恶意木马如果再结合其他攻击手段如社会工程学、提权等甚至可以获取系统的管理权限。
举例说明 例如:在项目看板里待材料初审存储下面代码点击A项目会弹出框
Payload: iframe οnlοadalert(xss);/iframe例如 全部阶段结果标准-存储下面代码点击20200927测试-2
Payload: textarea οnfοcusalert(xss); autofocus解决方案
找到项目已有的filter过滤器在过滤HttpServletRequest参数时进行参数的处理使用转义将 转义为 lt , 转义为 gt
public PaasHttpRequestWrapper(HttpServletRequest request) {super(request);StringBuilder stringBuilder new StringBuilder();InputStream inputStream null;try {inputStream request.getInputStream();} catch (IOException e) {throw new RuntimeException(e);}if (inputStream ! null) {try (BufferedReader bufferedReader new BufferedReader(new InputStreamReader(inputStream))) {char[] charBuffer new char[CHAR_BUFFER_LENGTH];int bytesRead;while ((bytesRead bufferedReader.read(charBuffer)) 0) {stringBuilder.append(charBuffer, BUFFER_START_POSITION, bytesRead);}} catch (IOException e) {e.printStackTrace();}} else {stringBuilder.append();}body stringBuilder.toString();// 解决xss攻击问题if (body.contains()) {body body.replace(, lt);}if (body.contains()) {body body.replace(, gt);}initParameterMap();}