公司开发的产品.在用软件扫描漏洞时,扫出了这么一个漏洞.

可以看出有漏洞的地方是登录页面.在登录中,主要逻辑如下: 一些拒绝登录是通过抛异常->然后捕获异常->获取异常信息->跳回到登录页面并展示错误信息. 下面为代码示例

@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.

本文到此结束

关于漏洞这个页面包含一个错误/警告信息,可能会导致敏感信息泄露相关推荐

  1. Web漏洞之文件包含漏洞

    公众号:黑客菌 分享更多技术文章,欢迎关注一起探讨学习 一.文件包含漏洞概述 1.漏洞介绍 程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这种文件 ...

  2. web页面常见的错误

    为什么80%的码农都做不了架构师?>>>    错误编号 说明 详细说明 401 未授权: 由于凭据无效,访问被拒绝. 您无权使用所提供的凭据查看此目录或页面 401-1 未授权: ...

  3. 配置snmp_多种设备基于 SNMP 协议的敏感信息泄露漏洞数据分析报告

    作者:知道创宇404实验室 1. 更新情况 2. 事件概述 SNMP协议[1],即简单网络管理协议(SNMP,Simple Network Management Protocol),默认端口为 161 ...

  4. MongoDB数据库因安全漏洞,导致Family Locator泄露二十多万名用户数据

    摘要:本月第二次,未受保护的MongoDB数据库因大量安全漏洞而导致敏感信息泄露,受欢迎的家庭跟踪应用程序Family Locator已经暴露了超过238,000名用户的实时未加密位置数据. 该应用程 ...

  5. 实战敏感信息泄露高危漏洞挖掘利用

    信息泄露介绍: 信息泄露就是某网站某公司对敏感数据没有安全的保护,导致泄露敏感被攻击者利用,例如泄露:账号,密码,管理员,身份证,数据库,服务器,敏感路径等等 信息泄露危害: 如果进了业务系统可以SQ ...

  6. php本地文件包含漏洞,php文件包含漏洞利用小结

    漏洞概述: 文件包含漏洞是指客户端(一般为浏览器)用户通过输入控制动态包含在服务器的文件,从而导致恶意代码的执行及敏感信息的泄露,主要包括本地文件包含LFI和远程文件包含RFI两种形式. 产生原因: ...

  7. 如何在另一个JavaScript文件中包含一个JavaScript文件?

    JavaScript中是否有类似于CSS中@import的内容,可让您在另一个JavaScript文件中包含一个JavaScript文件? #1楼 而不是在运行时添加,而是使用脚本在上传之前进行串联. ...

  8. php post 漏洞_文件包含上传漏洞目录遍历命令执行漏洞

    制丨阿星 来源丨freebuff 作者丨Deutsh 文件上传漏洞: 一句话木马 一句话木马主要由两部分组成:执行函数与 接收被执行代码的变量 执行函数: eval() assert() create ...

  9. php本地文件包含漏洞,本地文件包含漏洞详解---LFI

    1 概述 文件包含(Local File Include)是php脚本的一大特色,程序员们为了开发的方便,常常会用到包含.比如把一系列功能函数都写进fuction.php中,之后当某个文件需要调用的时 ...

最新文章

  1. 救人一命是怎样的体验?
  2. TCP及IP报头及协议
  3. LDAP 配置 ldap_bind: Invalid credentials (49)
  4. linux下安装或升级GCC 4.8以上版本(包括),以支持C++11
  5. Android-滑动解锁高亮文字自定义TextView
  6. 小白也能看懂——使用dev-c++建立工程(多个文件一同编译连接)并运行
  7. asp.net问题点集合
  8. matlab 差影法,MATLAB人体姿态行为识别[差影法,多姿势]
  9. VBoxGuestAdditions加载不了
  10. 华为数通HCIA学习笔记之数据通信与网络基础(二)
  11. Redies tutorial
  12. 小程序源码:收款码三合一制作
  13. 通信常识:波特率、数据传输速率与带宽的相互关系
  14. WIFI热点软件测试,用手机WiFi热点已OUT 华为随行WiFi Plus评测
  15. java unrar压缩_用java解压缩rar文件 de.innosystec.unrar解压缩rar文件
  16. 求求你们了,有什么能搞钱的副业
  17. 解决“A problem occurred starting process 'command ''D:\AndroidSdk\..\mips64el-linux-android-strip''的问题
  18. 句子深度假说——冯志伟
  19. 前端Ajax实现预览TXT文档(兼容UTF-8,ANCII,Unicode)
  20. 神州网信政府版Win10新建用户无法上网

热门文章

  1. [SCOI2007]组队
  2. java mininet_mininet部分整理
  3. 百度面试 从url到请求 再到页面生成
  4. 模拟器鸿蒙停止运行,【新手引导】模拟器频繁弹出“停止运行”报错操作方法。...
  5. windows无法打开chm帮助文件的问题
  6. 7天装修400平米店铺,圆你开店的梦
  7. 【TikZ 简单学习(下):基础绘制】Latex下的绘图宏包
  8. openCV超详细入门教程(python版)
  9. 硬盘序列号、设备序列等查询
  10. [机缘参悟-45]:鬼谷子-第九权篇-因人说话,投其所好