这篇博客的提纲如下:
一、故障梳理
二、故障解决方案
三、XSS小结
一、故障梳理
这要从最近出的一个故障说起。故障的过程大致如下:
A系统与B系统域名不同,A系统中的数据提交到A系统某个form表单,然后通过js函数提交到B系统后台,然后显示在B系统的IE浏览器上
这是整个数据流。
其中IE8开始,IE内置了XSS filter机制,当来源为跨站数据源,且数据源中含有疑似XSS攻击恶意数据(微软IE内置的正则来判断,例如,‘中文()’等)的时候,就会停止脚本的运行,直接跳转到空白页。
本故障就是在A系统提交的数据中含有疑似XSS攻击的字符,导致IE误判,(别的浏览器都没事,IE就是个惹祸的怪胎。远离IE得永生!)无法将数据正确在B系统展示出来。展示了空白页。
二、故障解决方案
解决方案暂时想到的有两种:
1、在B系统的Response的Header里面加入标签X-XSS-Protection=0,阻止IE XSS filter生效。但是这样做有损系统安全性
2、在A系统提交的数据里面做XSS字符的过滤,将疑似XSS的字符从半角转换为全角字符。后面会有相应的代码实现
3、将数据的A系统进行彻底的编码(Base64等),然后在B系统进行相应的解码
这里选择方案2进行实现:
代码如下:
public static String xssEncoder(String content){ StringBuilder bulider=new StringBuilder(); for(char c :content.toCharArray()){ switch (c) { case '>': bulider.append('>');// 全角大于号 break; case '<': bulider.append('<');// 全角小于号 break; case '\'': bulider.append('\\'); bulider.append('\''); bulider.append('\\'); bulider.append('\''); break; case '\"': bulider.append('\\'); bulider.append('\"');// 全角双引号 break; case '&': bulider.append('&');// 全角 break; case '\\': bulider.append('\');// 全角斜线 break; case '#': bulider.append('#');// 全角井号 break; case ':': bulider.append(':');// 全角冒号 break; case '%': bulider.append("\\\\%"); break; case '(': bulider.append("("); break; case ')': bulider.append(")"); break; case ',': bulider.append(","); break; case '.': bulider.append("。"); break; default: bulider.append(c); break; } } return bulider.toString(); }
顺便提一下针对全站进行XSS防御的两种常用手段
1、配置Nginx的过滤正则脚本,对疑似XSS的脚本特征进行拦截
2、在系统配置拦截器,针对XSS数据进行清洗过滤,如http://my.oschina.net/hermer/blog/152834
三、XSS 小结
这部分内容太多,做不好讲述。有很多web安全的书籍都讲得非常不错。这里就不泛泛而谈了
相关推荐
XSS的攻击与防范 XSS的攻击与防范
对用户输入的所有数据进行拦截,检测是否含有XSS攻击关键字,如果存在XSS攻击关键字,对一些特殊字符,如:“<”、“>”、“&”等进行转义。 实现方案 自定义一个Filter拦截器,使用 Filter来过滤浏览器发出的...
XSS的攻击与防范2 XSS的攻击与防范2
一、什么是XSS攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如...
简单让你了解xss攻击。 项目基于Asp.net 框架,VS2010下创建,C#语言
计算机后端-PHP视频教程. php之blog实战52-xss攻击与防范.wmv
XSS攻击常识及常见的XSS攻击脚本汇总
基于机器学习建模的 XSS 攻击防范检测.docx
跨站脚本攻击(CrossSiteScripting),缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。攻击者对含有漏洞的服务器发起...
SpringBoot +esapi springSecurity 过滤器链集成 实现防止xss攻击 实战代码
首先说一下思路,防止这种类似于注入攻击,就是使用拦截器(Filter)处理特殊字符或过滤特殊字符 今天介绍一个方法,利用覆盖Servlet的getParameter方法达到处理特殊字符的目的来解决(防止)Xss攻击 web.xml,需要的...
SpringBoot +esapi 实现防止xss攻击 实战代码,真实有效
XSS跨站脚本攻击在Java开发中防范的方法
预防xss攻击,过滤标签.js
XSS跨站脚本攻击剖析与防御是一本专门剖析XSS安全的专业书,总共8章,主要包括的内容如下。第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了...
防止XSS攻击简单实用的解决办法,直接复制两个过滤器,然后配置web.xml即可实现
网站xss 攻击 代码示例,包括alert弹框,钓鱼网站截取用户cookie信息等;是学习xss的简单示例。可以下载玩玩看看,示例中的钓鱼网站地址为 演示地址,即本资源中的项目地址。xss也是很简单的,可以学习学习
Java防止xss攻击依赖jar包