Java过滤XSS脚本, 可通过Appscan扫描
项目中有时会需要把一些报错或者解决方案直接返回给前端,
如果直接返回原字符串, 可能会被恶意传参来实现xss注入.
例如常规业务访问一个页面读取文件&file=sdf.cpt,
如果文件不存在, 则页面返回没有找到sdf.cpt的报错.
恶意传参即: &file=sdf.cpt<script>alert(123);</script>, 这样页面会alert出来123;
这时需要我们在后台对于一些报错进行去脚本话.
一开始是用的正则, 后来发现可以注入的脚本方式太多了, 用正则越来越长.
&file=/doc/Advanced/Chart/LineChart/%E5%AE%9A%E6%97%B6%E5%88%B7%E6%96%B0%E6%8A%98%E7%BA%BF%E5%9B%BE.cpt'%20STYLE='xss:e/**/xpression(try{a=firstTime}catch(e){firstTime=1;alert(9178)});
&file=emb%3Ciframe+src%3Djavascript%3Aalert%2898%29+
索性直接采用最简单粗暴的字符串替换了, 把html实体编码,特殊字符如()<>/,例如> 编成> <编成<
这样显示起来没有问题,也不会导致用户输入的js语句被插入到输出页面而被执行.
改完用Appscan扫了下, 也不会提示xss漏洞. Spring中也提供了类似的方法HtmlUtils.htmlEscape.
private static String encodeHtml(String strInput) {
if (StringUtils.isEmpty(strInput)) {
return StringUtils.EMPTY;
}
StringBuffer builder = new StringBuffer(strInput.length() * 2);
CharacterIterator it = new StringCharacterIterator(strInput);
for (char ch = it.first(); ch != CharacterIterator.DONE; ch = it.next()) {
if ((((ch > '`') && (ch < '{')) || ((ch > '@') && (ch < '[')))
|| (((ch == ' ') || ((ch > '/') && (ch < ':'))) || (((ch == '.') || (ch == ',')) || ((ch == '-') || (ch == '_'))))) {
builder.append(ch);
} else {
builder.append("&#" + (int) ch + ";");
}
}
return builder.toString();
}
Java过滤XSS脚本, 可通过Appscan扫描的更多相关文章
- SpringBoot过滤XSS脚本攻击
XSS攻击是什么 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安 ...
- 【快学SpringBoot】过滤XSS脚本攻击(包括json格式)
若图片查看异常,请前往掘金查看:https://juejin.im/post/5d079e555188251ad81a28d9 XSS攻击是什么 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cas ...
- JAVA覆写Request过滤XSS跨站脚本攻击
注:本文非本人原著. demo的地址:链接:http://pan.baidu.com/s/1miEmHMo 密码:k5ca 如何过滤Xss跨站脚本攻击,我想,Xss跨站脚本攻击令人为之头疼.为什么呢. ...
- 360在线网站安全检测,web安全测试AppScan扫描工具,XSS常用的攻击手法
360在线网站安全检测,web安全测试AppScan扫描工具,XSS常用的攻击手法 如何做好网站的安全性测试 360网站安全检测 - 在线安全检测,网站漏洞修复,网站后门检测http://websca ...
- Java Filter过滤xss注入非法参数的方法
http://blog.csdn.NET/feng_an_qi/article/details/45666813 Java Filter过滤xss注入非法参数的方法 web.xml: <filt ...
- Rational AppScan 扫描大型网站
Rational AppScan 工作原理 Rational AppScan(简称 AppScan)其实是一个产品家族,包括众多的应用安全扫描产品,从开发阶段的源代码扫描的 AppScan sourc ...
- AppScan 扫描测试策略
使用 AppScan 进行扫描 针对大型网站的扫描,我们按照戴明环 PDCA 的方法论来进行规划和讨论,建议 AppScan 使用步骤:计划(Plan).执行(Do).检查(check).分析(Ana ...
- AppScan扫描建议 问题集
1.1 AppScan扫描建议 若干问题的补救方法在于对用户输入进行清理. 通过验证用户输入未包含危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询 ...
- 如何更有效使用 Rational AppScan 扫描大型网站,第 2 部分: 案例分析
使用 AppScan 进行扫描 针对大型网站的扫描,我们按照戴明环 PDCA 的方法论来进行规划和讨论,建议 AppScan 使用步骤:计划(Plan).执行(Do).检查(check).分析(Ana ...
随机推荐
- 通过读取配置文件,启动mongodb
在实际的项目中,经常利用mongodb数据库做缓存,mongodb的并发性比较高,所以对于快速存储.读取信息有很多优点.在项目中对于第一次的数据请求会直接访问数据库,而对于获得的信息通常都会在此时刻存 ...
- 排序算法(Java实现)
这几天一直在看严蔚敏老师的那本<数据结构>那本书.之前第一次学懵懵逼逼,当再次看的时候,发觉写的是非常详细,非常的好. 那就把相关的排序算法用我熟悉的Java语言记录下来了.以下排序算法是 ...
- Java经典编程题50道之四十四
求0~7所能组成的奇数个数.分析:组成1位数是4个,组成2位数是7*4个,组成3位数是7*8*4个,组成4位数是7*8*8*4个…… public class Example44 { publi ...
- mysql3 - 常规数据检索、常见操作与函数
一.常规数据检索 二.常见操作与函数
- 深度学习中batch normalization
目录 1 Batch Normalization笔记 1.1 引包 1.2 构建模型: 1.3 构建训练函数 1.4 结论 Batch Normalization笔记 我们将会用MNIST数 ...
- nyoj234 吃土豆 01背包
思路:假设我们先只考虑一行,规则就是取了i处的土豆,每一个土豆有两种选择,拿与不拿,那么i-1和i+1处的土豆都不能再取,那么要求某一行的最大取值就用一次动态规划即可,dp(i)表示前i个土豆能取得的 ...
- CodeForces - 796A Buying A House
思路:从m直接向两边枚举,如果当前点需要的费用小于等于k,说明一定是最近距离. AC代码 #include <cstdio> #include <cmath> #include ...
- uva1343 IDA*
这题需要用数组记录每个block的位置.启发函数:d+wa(8-当前最多相同个数)>maxd直接退出 AC代码: #include<cstdio> #include<cstri ...
- codeforce-748A
简单判断一下就行. AC代码: #include<cstdio> int main(){ int n,m,k; while(scanf("%d%d%d",&n, ...
- Linux基础一
基本命令 useradd xxx 创建一个用户 uname 查看系统架构信息 uname -a 显示详细信息 uname -r 显示内核信息 date 显示当前网络时间 cat ...