Fortify漏洞之Portability Flaw: File Separator 和 Poor Error Handling: Return Inside Finally
继续对Fortify的漏洞进行总结,本篇主要针对 Portability Flaw: File Separator 和 Poor Error Handling: Return Inside Finally 漏洞进行总结,如下:
1、Portability Flaw: File Separator(文件分隔符)
1.1、产生原因:
不同的操作系统使用不同的字符作为文件分隔符。例如,Microsoft Windows 系统使用“\”,而 UNIX 系统则使用“/”。应用程序需要在不同的平台上运行时,使用硬编码文件分隔符会导致应用程序逻辑执行错误,并有可能导致 denial of service(拒绝服务)。
例 1:以下代码使用硬编码文件分隔符来打开文件:
...
File file = new File(directoryName + "\\"
+ fileName);
1.2、修复方案:
为编写可移植代码,不应使用硬编码文件分隔符,而应使用语言库提供的独立于平台的 API。
例 2:下列代码执行与例 1 相同的功能,但使用独立于平台的 API 来指定文件分隔符:
...
File file = new File(directoryName +
File.separator + fileName);
...
2、Poor Error
Handling: Return Inside Finally
2.1、产生原因:
finally 块中的返回指令会导致从 try 块中抛出的异常丢失。
例 1:在下列代码中,调用 doMagic 方法,会导致抛出 Exception 异常,但该异常将不会传递给调用者,因为finally 块中的返回指令会导致异常的丢弃。
public static void doMagic() throws
Exception {
try {
throw new Exception(“Something error!”); //1.抛出异常
}catch(Exception
e){ //2.捕获异常匹配,进入控制块
throw e;
}finally { //3.throw前控制转移到finally块,执行完后再返回
return true; //4.控制转移,直接return,不再返回catch块,吃掉了异常
}
}
2.2、修复方案:
将返回指令移到 finally 块之外。如果必须要finally 块返回一个值,可以简单地将该返回值赋给一个本地变量,然后在 finally 块执行完毕后返回该变量。
1、不要在finally里面写return语句
Fortify漏洞之Portability Flaw: File Separator 和 Poor Error Handling: Return Inside Finally的更多相关文章
- Fortify漏洞之Portability Flaw: Locale Dependent Comparison
继续对Fortify的漏洞进行总结,本篇主要针对 Portability Flaw: Locale Dependent Comparison 漏洞进行总结,如下: 1.Portability Flaw ...
- 关于Java的File.separator
在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常. 比如说要在temp目录下建立一个te ...
- java中的File.separator
前些天遇到一个问题,困扰了好久,现在终于解决了. 问题:上传的图片不能正确显示. 我的开发环境是在Windows下,工程在Windows下能正常部署,上传的图片也可以正常的显 示.但是把工程部署在服务 ...
- java File.separator 简介
在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常. 比如说要在temp目录下建立一个te ...
- Java的File.separator
一.File类 在Windows下的路径分隔符(\)和在Linux下的路径分隔符(/)是不一样的,当直接使用绝对路径时,跨平台会报No Such file or diretory异常. File中还有 ...
- Java File.separator
在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常. 比如说要在temp目录下建立一个te ...
- java 路径分隔符File.separator 以及 路径两种写法"/"和"\\"
一.File.separator File file=new File(); 这句是新建一个文件.file.separator这个代表系统目录中的间隔符,说白了就是斜线,不过有时候需要双线,有时候是单 ...
- File.separator与 \分隔符
在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常. 比如说要在temp目录下建立一个te ...
- Portability Flaw Locale Dependent Comparison
Portability Flaw Locale Dependent Comparison [问题描述] 该问题涉及String的toUpperCase()方法.具体通过例子演示相关现象. public ...
随机推荐
- Dockerfile解析(八)
一.Dockerfile是什么 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本. 1. 构建的步骤 运行容器:docker run 构建新的镜像:docker ...
- TCP协议的粘包问题(八)
一.什么是粘包 在socket缓冲区和数据的传递过程介绍中,可以看到数据的接收和发送是无关的,read()/recv() 函数不管数据发送了多少次,都会尽可能多的接收数据.也就是说,read()/re ...
- 生鲜超市项目错误及解决办法(crispy_forms、外键指向自己、class嵌套访问父类、meta类及各种字段参数)
为什么要在INSTALLED_APPS中加入crispy_forms? 因为django-crispy-forms 是对django form在html页面呈现方式进行管理的一个第三方插件. 为什么有 ...
- BN和Relu
Batch normalization + ReLU 批归一化(BN)可以抑制梯度爆炸/消失并加快训练速度 原论文认为批归一化的原理是:通过归一化操作使网络的每层特征的分布尽可能的稳定,从而减少Int ...
- leetcode14最长公共前缀
class Solution { public: string longestCommonPrefix(vector<string>& strs) { ) return " ...
- web框架--tornado框架之模板引擎
使用Tornado实现一个简陋的任务表功能demo来讲解tornado框架模板引擎 一.demo目录结构 二.具体文件内容 2.1.commons.css .body{ margin: 0; back ...
- plsql导入.dmp步骤
https://blog.csdn.net/yudianxiaoxiao/article/details/78231143 plsql导入.sql和.dmp文件时,会经常用到,对于初学者来说可 ...
- [LeetCode] 377. Combination Sum IV 组合之和之四
Given an integer array with all positive numbers and no duplicates, find the number of possible comb ...
- (转)yum只下载不安装软件包
方法一:使用yum的downloadonly插件 步骤: (1) 先安装downloadonly插件 yum install yum-plugin-downloadonly (2)使用–downlo ...
- Airtest网易开源的一款UI自动化测试工具
Airtest网易开源的一款UI自动化测试工具 1 Airtest 简介Airtest Project是网易游戏内部工具团队开发并开源的一款UI自动化测试工具,据说曾经获得谷歌力挺. AirtestI ...