Fortify漏洞之Portability Flaw: File Separator 和 Poor Error Handling: Return Inside Finally

匿名 (未验证) 提交于 2019-12-02 23:43:01

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:以下代码使用硬编码文件分隔符来打开文件:
...
"\\"

1.2、修复方案:

  为编写可移植代码,不应使用硬编码文件分隔符,而应使用语言库提供的独立于平台的 API。

例 2下列代码执行与例 1 相同的功能,但使用独立于平台的 API 来指定文件分隔符:
...
File file = new File(directoryName +

2、Poor Error Handling: Return Inside Finally

2.1、产生原因:

例 1

public static void doMagic() throws Exception {

  try {

//1.抛出异常

//2.捕获异常匹配,进入控制块

//3.throw前控制转移到finally块,执行完后再返回

//4.控制转移,直接return,不再返回catch块,吃掉了异常

  }

}

2.2、修复方案:


  1、不要在finally里面写return语句

1、Portability Flaw: File Separator(文件分隔符)

1.1、产生原因:

  不同的操作系统使用不同的字符作为文件分隔符。例如,Microsoft Windows 系统使用“\”,而 UNIX 系统则使用“/”。应用程序需要在不同的平台上运行时,使用硬编码文件分隔符会导致应用程序逻辑执行错误,并有可能导致 denial of service(拒绝服务)。

例 1:以下代码使用硬编码文件分隔符来打开文件:
...
"\\"

1.2、修复方案:

  为编写可移植代码,不应使用硬编码文件分隔符,而应使用语言库提供的独立于平台的 API。

例 2下列代码执行与例 1 相同的功能,但使用独立于平台的 API 来指定文件分隔符:
...
File file = new File(directoryName +

2、Poor Error Handling: Return Inside Finally

2.1、产生原因:

例 1

public static void doMagic() throws Exception {

  try {

//1.抛出异常

//2.捕获异常匹配,进入控制块

//3.throw前控制转移到finally块,执行完后再返回

//4.控制转移,直接return,不再返回catch块,吃掉了异常

  }

}

2.2、修复方案:


  1、不要在finally里面写return语句

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!