关于漏洞这个页面包含一个错误/警告信息,可能会导致敏感信息泄露
公司开发的产品.在用软件扫描漏洞时,扫出了这么一个漏洞.
可以看出有漏洞的地方是登录页面.在登录中,主要逻辑如下: 一些拒绝登录是通过抛异常->然后捕获异常->获取异常信息->跳回到登录页面并展示错误信息. 下面为代码示例
@RequstMapping("login")
public String login(LoginForm loginForm){try{myService.doLogin(loginForm);}catch(Exception e){request.setAttribute("errorMessage", e.getMessage());//把错误信息提示给用户return "login";}return "index";//成功登录进入主页
}public void doLogin(LoginForm loginForm)){if(...){throw new BusiException("账号被挂起,暂不能登录。");}if(...){throw new BusiException("账号或密码错误");}}
感觉异常都可以被正常捕获, 并把错误信息正常提示给用户.
找了很久都不知道是哪里出问题, 看了扫描报告的解决方案: 使用通用页面, 屏蔽掉具体的错误信息. 就开始考虑是不是有的异常没处理好, 导致把异常的英文内容直接返回到页面去了.
最后在看代码的时候发现, 登录的时候涉及到内容的加密和解密. 如果登录时用非常规手段传了一串非法的字符串进行登录.在解密的时候可能会出现一些异常,如索引越界,这样就会把异常的英文内容直接提示给页面了. 以下为解密的代码.
private static byte[] decrypt(byte[] byteArray) {try {Provider provider = new org.bouncycastle.jce.provider.BouncyCastleProvider();Security.addProvider(provider);//Cipher: 提供加密和解密功能的实例//transformation: "algorithm/mode/padding"Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", provider);PrivateKey privateKey = keyPair.getPrivate();//初始化cipher.init(Cipher.DECRYPT_MODE, privateKey);byte[] plainText = cipher.doFinal(byteArray);return plainText;} catch(Exception e) {throw new MyDecryptException(e); //解密中发生的其他异常,此处没处理,直接抛到上一层}}
故在登录接口中处理异常的时候, 要根据不同的异常进行处理. 业务的异常, 如密码错误,账户冻结等, 就按业务异常提示.其他意外的错误, 则统一给提示语, 屏蔽掉异常的英文内容
@RequstMapping("login")
public String login(LoginForm loginForm){try{myService.doLogin(loginForm);}catch(BusiException e){//业务异常request.setAttribute("errorMessage", e.getMessage());//把错误信息提示给用户return "login";}catch(Exception e){//其他的意外异常request.setAttribute("errorMessage", "你是sb吗,乱来?");return "login";}return "index";//成功登录进入主页
}
当然这里也可以改解密方法decrypt(), 捕获异常后给个提示语再抛到上一层, 但是由于在这个应用中decrypt()方法是一个通用方法, 直接抛异常也方便开发在调用这个方法的时候做排查. 估这里选择改Controller中对异常的处理方式
处理后,再次扫描,通过了.
另外,对于这种异常处理, 最好做AOP统一处理, 如ControllerAdvice.
本文到此结束
关于漏洞这个页面包含一个错误/警告信息,可能会导致敏感信息泄露相关推荐
- Web漏洞之文件包含漏洞
公众号:黑客菌 分享更多技术文章,欢迎关注一起探讨学习 一.文件包含漏洞概述 1.漏洞介绍 程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这种文件 ...
- web页面常见的错误
为什么80%的码农都做不了架构师?>>> 错误编号 说明 详细说明 401 未授权: 由于凭据无效,访问被拒绝. 您无权使用所提供的凭据查看此目录或页面 401-1 未授权: ...
- 配置snmp_多种设备基于 SNMP 协议的敏感信息泄露漏洞数据分析报告
作者:知道创宇404实验室 1. 更新情况 2. 事件概述 SNMP协议[1],即简单网络管理协议(SNMP,Simple Network Management Protocol),默认端口为 161 ...
- MongoDB数据库因安全漏洞,导致Family Locator泄露二十多万名用户数据
摘要:本月第二次,未受保护的MongoDB数据库因大量安全漏洞而导致敏感信息泄露,受欢迎的家庭跟踪应用程序Family Locator已经暴露了超过238,000名用户的实时未加密位置数据. 该应用程 ...
- 实战敏感信息泄露高危漏洞挖掘利用
信息泄露介绍: 信息泄露就是某网站某公司对敏感数据没有安全的保护,导致泄露敏感被攻击者利用,例如泄露:账号,密码,管理员,身份证,数据库,服务器,敏感路径等等 信息泄露危害: 如果进了业务系统可以SQ ...
- php本地文件包含漏洞,php文件包含漏洞利用小结
漏洞概述: 文件包含漏洞是指客户端(一般为浏览器)用户通过输入控制动态包含在服务器的文件,从而导致恶意代码的执行及敏感信息的泄露,主要包括本地文件包含LFI和远程文件包含RFI两种形式. 产生原因: ...
- 如何在另一个JavaScript文件中包含一个JavaScript文件?
JavaScript中是否有类似于CSS中@import的内容,可让您在另一个JavaScript文件中包含一个JavaScript文件? #1楼 而不是在运行时添加,而是使用脚本在上传之前进行串联. ...
- php post 漏洞_文件包含上传漏洞目录遍历命令执行漏洞
制丨阿星 来源丨freebuff 作者丨Deutsh 文件上传漏洞: 一句话木马 一句话木马主要由两部分组成:执行函数与 接收被执行代码的变量 执行函数: eval() assert() create ...
- php本地文件包含漏洞,本地文件包含漏洞详解---LFI
1 概述 文件包含(Local File Include)是php脚本的一大特色,程序员们为了开发的方便,常常会用到包含.比如把一系列功能函数都写进fuction.php中,之后当某个文件需要调用的时 ...
最新文章
- 救人一命是怎样的体验?
- TCP及IP报头及协议
- LDAP 配置 ldap_bind: Invalid credentials (49)
- linux下安装或升级GCC 4.8以上版本(包括),以支持C++11
- Android-滑动解锁高亮文字自定义TextView
- 小白也能看懂——使用dev-c++建立工程(多个文件一同编译连接)并运行
- asp.net问题点集合
- matlab 差影法,MATLAB人体姿态行为识别[差影法,多姿势]
- VBoxGuestAdditions加载不了
- 华为数通HCIA学习笔记之数据通信与网络基础(二)
- Redies tutorial
- 小程序源码:收款码三合一制作
- 通信常识:波特率、数据传输速率与带宽的相互关系
- WIFI热点软件测试,用手机WiFi热点已OUT 华为随行WiFi Plus评测
- java unrar压缩_用java解压缩rar文件 de.innosystec.unrar解压缩rar文件
- 求求你们了,有什么能搞钱的副业
- 解决“A problem occurred starting process 'command ''D:\AndroidSdk\..\mips64el-linux-android-strip''的问题
- 句子深度假说——冯志伟
- 前端Ajax实现预览TXT文档(兼容UTF-8,ANCII,Unicode)
- 神州网信政府版Win10新建用户无法上网
热门文章
- [SCOI2007]组队
- java mininet_mininet部分整理
- 百度面试 从url到请求 再到页面生成
- 模拟器鸿蒙停止运行,【新手引导】模拟器频繁弹出“停止运行”报错操作方法。...
- windows无法打开chm帮助文件的问题
- 7天装修400平米店铺,圆你开店的梦
- 【TikZ 简单学习(下):基础绘制】Latex下的绘图宏包
- openCV超详细入门教程(python版)
- 硬盘序列号、设备序列等查询
- [机缘参悟-45]:鬼谷子-第九权篇-因人说话,投其所好