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 ...
随机推荐
- 基于agenda的Nodejs定时任务管理框架搭建
0.背景 在大型项目中,定时任务的应用场景越来越广.一般来说,按照微服务的思想,我们会将定时任务单独部署一套服务,核心的业务接口独立到另一个服务中,从而降低相互之间的耦合程度.在需要使用定时任务时,只 ...
- 两种实现方式mycat多租户,枚举分片,注解拦截
第一种: 优点:支持进一步分片 缺点:schema配置繁琐 注解式 /*!mycat:schema=[schemaName] */ 注意:这在navicat 里面是会报错的,请用命令行登陆myc ...
- [Note] Yet Another Resource Negotiator
Yet Another Resource Negotiator Apache Hadoop YARN 是新一代资源管理调度框架,主要针对 Hadoop MapReduce 1.0 的缺陷做出了改进 M ...
- 微软Surface Book推送Windows 10新固件更新:增强系统和电池
微软公司最近为Surface Book推出了新的Windows 10固件系统和驱动的更新,并且以MSI的文件格式上传到了微软的下载中心里面.此次更新的内容主要是改进了Surface Book的系统的稳 ...
- 第4章 PCIe总线概述
随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋.与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的 ...
- HI3531uboot开机画面
startvo 0 36 13; startgx 0 0x88000000 1600 0 0 800 600; //startgx 0 0x88000000 2048 0 0 1024 768; se ...
- Redis相关指令文档
连接控制 QUIT 关闭连接 AUTH (仅限启用时)简单的密码验证 适合全体类型的命令 EXISTS key 判断一个键是否存在;存在返回 1;否则返回0; DEL key 删除某个key,或是一系 ...
- linux下驱动模块化编译,动态加载以及卸载
步骤:: 1.编写first_driver_hello.c文件,将其放在/linux2.6.32/drivers/char路径下: 2.在/linux2.6.32/drivers/cha/Kconfi ...
- java.sql.SQLException: Access denied for user 'sa'@'localhost' (using password: NO)
1.错误描述 INFO:2015-05-01 16:53:29[main] - HHH000228: Running hbm2ddl schema update INFO:2015-05-01 16: ...
- 查找IFileSourceFilter上的Pin
创建了IFileSourceFilter,可IFileSourceFilter好像不是从IBaseFilter继承来的,没有EnumPins,那应该怎么查找IFileSourceFilter上的pin ...