Java代码审计-路径遍历 目录覆盖 举例:解压zip文件,未对zip目录进行验证

 

举例:项目中在解压zip文件时,未对zip条目进行验证,存在路径遍历的风险,为了系统安全,应加上安全黑名单特殊字符过滤。

示例 代码如下:
  String name= zipEntry getName O
  通过上述语句获取zip条目的名字,
  File unzipFile- new File(path+ name)
  随后通过获取的zip条目名字直接创建文件夹或文件。

    Web应用接收恶意zip压缩包,会造成受保护的文件或目录被覆盖等危险。


  修复建议:在解压zip文件时,对zip条目名称进行危险字符过滤,禁止解压缩路径中包含(.)等特殊字符


//获取压文件对象,gbk解决中文文件夹乱码   zip =
new ZipFile(zipFile, Charset forName("GBK)):   Enumeration <? extends ZipEntry> entries=zip. entries();
  ExcellmportData excellmportData
null:   while(entries.hasMoreElements(){     zipEntry zipEntry = entries.nextElement();     String name = zpEntry.getName();
    File unzipFiles =
new File(path name);     if (unzipFile.isDirectory || unzipFile.getName().contains(".")){       unzipFile.mkdirs();     }else       File parentFile unzipFilegetParentFileo:     if (parentFileexists){       parentFilemkdirsO:       bis new BufferedInputstream(zip. getinpu tstream(zipEntry2):       bos new Bufferedoutputstream(new FileOutputStream(unzip File));
      ... ...
      ... ...

 




转载于:https://www.cnblogs.com/jayus/p/11423769.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值