Fortofy扫描安全漏洞解决——Unreleased Resource: Streams未释放资源漏洞

问题描述:
大部分 Unreleased Resource 问题只会导致一般的软件可靠性问题,但如果攻击者能够故意触发资源泄漏,该攻击者就有可能通过耗尽资源池的方式发起 denial of service 攻击。

问题代码:

 FileInputStream inputStream = new FileInputStream(sourcePath);FileOutputStream outputStream = new FileOutputStream(destinationPath);byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, bytesRead);}// 注意:这里缺少关闭资源的代码

解决方案1:使用try-catch-finally,在finally语句块中关闭资源(一般还是会被Fortofy扫描出来)

        FileInputStream inputStream = null;FileOutputStream outputStream = null;try {inputStream = new FileInputStream(sourcePath);outputStream = new FileOutputStream(destinationPath);byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, bytesRead);}} catch (IOException e) {e.printStackTrace();} finally {try {if (inputStream != null) {inputStream.close();}if (outputStream != null) {outputStream.close();}} catch (IOException e) {e.printStackTrace();}}

解决方案2:使用try-with-resources方式解决(不会被Fortofy检测出漏洞)

        try-with-resources大家不太常见,格式就是在try与catch语句块之间加入小括号,我们在小括号之中编写开启文件流代码,try-with-resources会为我们管理文件流,大伙儿无需手动关闭流资源。强烈推荐使用!增加代码可读性和行数,也会避免犯错。
 

    try (FileInputStream inputStream = new FileInputStream(sourcePath);FileOutputStream outputStream = new FileOutputStream(destinationPath)) {byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, bytesRead);}} // try-with-resources 会自动关闭资源}

​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ETL异构数据源Datax_使用querySql_08

使用说明 当用户配置了这一项之后,DataX系统就会忽略table,column 这些配置型,直接使用这个配置项的内容对数据进行筛选,例 如需要进行多表join后同步数据,使用select a,b from table_a join table_b on table_a.id t…

我被“非结构化数据包围了”,请求支援!

阿里妹导读:非结构化数据的内容占据了当前数据海洋的80%。换句话来说,就是我们都被“非结构化数据”包围了。由于非结构化数据的信息量和信息的重要程度很难被界定,因此对非结构化数据的使用成为了难点。如果说结构化数据用详实的方式记录了企…

82年 AI程序员征婚启示火了!年薪百万,女生神回复

最近在某社区,一则程序员征婚启示火了!很多女生在评论区表示“全中”,想交流看看。然后评论区就炸了,有人恶意说yp,有人说看中了楼主的钱。笔者一翻,发现楼主果然无意中透露了百万年薪收入,虽然…

ETL异构数据源Datax_datax-web简述_09

简介 地址:https://github.com/WeiYe-Jing/datax-web DataX Web是在DataX之上开发的分布式数据同步工具,提供简 单易用的 操作界面,降低用户使用DataX的学习成本,缩短任 务配置时间,避免配置过程中出错。用户可通过页面选择数据 源…

阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性

首先我们必须承认,Java 8 是一个里程碑式的版本,这个相信大多数Java程序员都认同,其中最知名的是 Streams & Lambda ,这让 Functional Programming 成为可能,让 Java 换发新的活力。这也是即便 Oracle 不在支持 Ja…

AWS 专家教你使用 Spring Boot 和 DJL ,轻松搭建企业级机器学习微服务!

作者 | Qing Lan,Mikhail Shapirov责编 | Carol封图 | CSDN 下载自视觉中国出品 | CSDN云计算(ID:CSDNcloud)许多AWS云服务的用户,无论是初创企业还是大公司,都在逐步将机器学习 (ML) 和深度学习 (DL) 任务…

【从入门到放弃-ZooKeeper】ZooKeeper入门

前言 ZooKeeper是一个分布式服务协调框架,可以用来维护分布式配置信息、服务注册中心、实现分布式锁等。在Hbase、Hadoop、kafka等项目中都有广泛的应用。随着分布式、微服务的普及,ZooKeeper已经成为我们日常开发工作中无法绕过的一环,本文…

ln: failed to create symbolic link ‘/usr/bin/mysql’: File exists

问题描述: ln -s /usr/local/mysql/bin/mysql /usr/bin 在centos7进行软链接设置的时候,出现了这么问题:问题就是说这个文件已存在, 解决方法:覆盖之前的 ln -sf /usr/local/mysql/bin/mysql /usr/bin

读透《阿里巴巴数据中台实践》,其到底有什么高明之处?

最近阿里巴巴分享了《阿里巴巴数据中台实践》这个PPT(自行搜索原始文章),对于数据中台的始作俑者,还是要怀着巨大的敬意去学习的,因此仔细的研读了,希望能发现一些不一样的东西。 读这些专业的PPT&#xf…

如果你也想做实时数仓…

数据仓库也是公司数据发展到一定规模后必然会提供的一种基础服务,数据仓库的建设也是“数据智能”中必不可少的一环。本文将从数据仓库的简介、经历了怎样的发展、如何建设、架构演变、应用案例以及实时数仓与离线数仓的对比六个方面全面分享关于数仓的详细内容。 …

华为云战略投入政企市场,发布华为云Stack

2020年5月15日,华为云发布政企战略,并宣布华为云Stack系列新品正式上市。华为云Stack是位于政企客户本地数据中心的云基础设施,能为政企客户提供在云上和本地部署体验一致的云服务。随着政企智能升级进入深水区,华为云将战略投入政…

Mysql 启动报错解析:Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/dat

现象: rootcentos74 ~]# service mysqld start Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysqld.pid).解决方案: 可能已经存在 mysqld 进程. [rootcentos74 ~]# ps -ef | grep mysqld [rootcentos7…

如何在 Apache Flink 中使用 Python API?

本文根据 Apache Flink 系列直播课程整理而成,由 Apache Flink PMC,阿里巴巴高级技术专家 孙金城 分享。重点为大家介绍 Flink Python API 的现状及未来规划,主要内容包括:Apache Flink Python API 的前世今生和未来发展&#xff…

阿里云HBase Ganos全新升级,推空间、时空、遥感一体化基础云服务

1、HBase Ganos是什么 Ganos是阿里云时空PaaS服务的自研核心引擎。Ganos已作为云数据库时空引擎与数据库平台融合,建立了以自研云原生数据库POALRDB为基础,联合NoSQL大数据平台(Ali-HBASE和X-Pack Spark)的完整时空地理信息云化管…

看完这篇操作系统,和面试官扯皮就没问题了!

作者 | Cxuan责编 | Carol来源 | 程序员 cxuan封图 | CSDN 付费下载于视觉中国1、解释一下什么是操作系统操作系统是运行在计算机上最重要的一种软件,它管理计算机的资源和进程以及所有的硬件和软件。它为计算机硬件和软件提供了一种中间层。通常情况下,…

Linux centos7 安装 MySQL5.7.x

文章目录一、下载安装2. wget 下载方式3. 安装4. 初始化数据库二、修改密码2.1. 修改密码2.2. 修改密码2.3. 允许远程访问2.4. 关闭防火墙2.4. 建立mysql软连接一、下载安装 下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 下载地址&#xff…

顺序结构,选择结构,反编译

顺序结构 Java基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句的执行顺序结构是最简单的算法结构任何一个算法都离不开的一种基本算法结构 package com.boss.struct;public class ShunXuDemo {public static void main(String[] args) {Sys…

助力共享经济,芝麻信用背后的技术

近期,CCTV9播放了自制的系列纪录片《大数据时代》,该片是国内首部大数据产业题材纪录片,节目细致而生动地讲述了大数据技术在政府治理、民生服务、数据安全、工业转型、未来生活等方面给我们带来的改变和影响。在第四集中,讲述了芝…

bash: jps: command not found

Centos7 默认安装了openJDK,jps命令不能使用,如果jdk是重新安装指定的版本,默认不需要重新安装jps服务[rootmaven-test ~]# jps bash: jps: command not found... 解决办法[rootmaven-test ~]# yum install -y java-1.8.0-openjdk-devel 再次…

你的项目是否真的需要 DevOps?

DevOps即服务(DevOps-as-a-Service)是一种新兴的开发理念。DevOps作为一种方法,将传统的团队协作转移到开发和运维团队中,通过使用可堆叠的虚拟扩展工具实现自动化。作者 | raghuraji300译者 | Arvin,责编 | 屠敏头图 …