如何纠正 fortify 给出的路径操作错误?

2023-11-29

我需要读取保存在 user_home 文件夹中的属性文件。

PropsFile = System.getProperty("user.home") + System.getProperty("file.separator")+ "x.properties"; 

Fortify 在这一行中给出了路径操作错误。正确值的数量很大,因此黑名单是唯一可能的方法。因此,为了避免这种情况,我更改了代码,如下所示。

String propsFile = null;
StringBuffer sb = new StringBuffer();
String xProperties = "x.properties";
String userHome = System.getProperty("user.home");  // *
if(userHome.contains("..\\"))
 userHome = userHome.replace("..\\", "");
if(userHome.contains("../"))
 userHome = userHome.replace("../", "");
if(userHome.contains("./"))
 userHome = userHome.replace("./", "");

String fileSeperator = System.getProperty("file.separator");    // *
  if(fileSeperator.equals("/") || fileSeperator.equals("\\")){
    sb = sb.append(userHome).append(fileSeperator).append(xProperties);
    propsFile = sb.toString();
  }

但强化仍然在 (*) 标记行中给我同样的错误(尽管验证已完成)。 我怎样才能消除错误?


我建议您不要尝试消除 Fortify 错误,而是考虑安全漏洞。

问题是 user.home 可以被精心设计(可能使用 -D vm 参数),以允许打开或销毁系统上任何位置的任何名为 x.properties 的文件。例如,将 user.home 设置为 /usr/local 不会被黑名单检测到。然后可以读取或覆盖任何名为 /usr/local/x.properties 的文件。

您需要质疑为什么可以允许 user.home 的任何值。您需要检查从 user.home 获取的路径是否以某个位置(例如 /home)开头。这称为白名单验证,是一种常见且众所周知的安全漏洞修复方法。一旦确定所提供的路径在已知位置具有根,那么您就可以将目录遍历列入黑名单。

我知道这很痛苦,但尝试仅通过黑名单来解决此问题充满危险,并且永远无法解决问题。这是一个真正的安全问题,而不仅仅是 Fortify 错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何纠正 fortify 给出的路径操作错误? 的相关文章

  • Fortify自定义规则笔记(一)

    一 Fortify SCA 自定义规则介绍 Fortify是一款强大的静态代码扫描分析工具 其发现代码漏洞缺陷的能力十分强悍 主要是将代码经过编译 依托于其强大的内置规则库来发现漏洞的 其次fortify SCA 团队在开发此商业工具时 也
  • fortify 漏洞扫描的几种解决方式

    1 关于Log的问题 Log Forging 整个系统中 对于Log的问题最多 可以采用以下方式进行解决 解决方案如下 1 只输出必要的日志 功能上线前屏蔽大多数的调试日志 2 过滤掉非法字符 2 关于创建File Path Manipul
  • 如何查看 Fortify 安全编码规则的所有规则?

    我想查看 Fortify 安全编码规则的具体规则 Fortify 默认使用的规则 因为我想编写一份有关 Fortify 使用的所有规则的报告 我试图看到他们C Program Files Fortify Software HP Fortif
  • HP Fortify——注释方法参数

    我正在尝试消除 Java 应用程序的 HP Fortify 扫描中的误报 此方法会导致 侵犯隐私 问题 PrintWriter 是 servlet 响应 private void writeOutput String passwordRul
  • 如何纠正 fortify 给出的路径操作错误?

    我需要读取保存在 user home 文件夹中的属性文件 PropsFile System getProperty user home System getProperty file separator x properties Forti
  • ASP.NET 不良实践:会话中存储不可序列化的对象

    我有一个类似的代码 Session key value 但根据 Fortify SCA 由于 会话中存储了不可序列化的对象 这被认为是一种不好的做法 Screenshot as below 解决这个问题的最佳方法是什么 如何使字符串 val
  • 如何使用Fortify Scan 16.11通过project.Json扫描dotnet core

    我创建了一个默认的 Net Core 1 0 1 类库 并更改了 project json 中的 buildOptions 以包含 debugType Full 我使用 16 11 的集成 VS 2015 Fortify Scan 并收到以
  • 如何在 PowerShell 中找到部分路径的潜在源环境变量?

    我想编写一个函数 将常规路径转换为包含环境变量的路径 例如 C Windows SomePath 转换成 Windir SomePath 我该怎么做 这可能吗 这是我想要做的 但问题是 我需要检查字符串 所有可能的变量 是否有一些更自动的方
  • EnableHeaderChecking=true 是否足以防止 Http 标头注入攻击?

    拥有 就足够了吗 System Web Configuration HttpRuntimeSection EnableHeaderChecking http msdn microsoft com en us library system w
  • Fortify 源分析器和 Apache Lenya

    我正在尝试将 Fortify 源代码分析器用于我学校的一个研究项目 以测试开源 Java Web 应用程序的安全性 我目前正在研究 Apache Lenya 我正在使用最新的稳定版本 Lenya v2 0 2 根目录下有一个文件名为buil
  • 如何强制 cmake 使用没有完整路径的 cl.exe?

    我正在构建一个使用 CMake 的开源项目 kst v2 0 8 我使用 CMake v2 8 12 2 和 MSVC 2008 作为编译器 并生成 NMake makefile 以在命令行上构建它 我可以通过此设置成功构建它 这些版本是强
  • HP Fortify 路径操作验证规则

    我正在通过 Hp Fortify 运行代码 并有一些路径操纵的发现 我了解它的背景并试图解决 我没有遍历从数据库查询某些路径值来存储输出文件 日志 导出数据等 的所有位置 而是尝试将其集中化 因此 我不想让 File WriteAllTex
  • 如何生成包含所有问题的报告?

    我有一个在 AWB 中打开的 Fortify FPR 扫描文件 我想生成一份报告 其中包含发现问题的所有实例 当我生成报告时 它会生成按类型及其计数列出问题的报告 并且在类型下方我还会获得以下名称和代码片段some发现问题的文件 我想生成一
  • Java 中 JSON 注入的 Fortify 错误

    我正进入 状态SUBSCRIPTION JSON来自客户端 我将其转换为字符串 然后使用 gson 库将其设置为模型对象 在 Fortify security 上运行代码时 下面的代码出现 Json 注入错误 并显示以下消息 这是错误 On
  • HP 强化 XML 外部实体注入

    Hp fortify 通过以下代码向我展示了 XML 外部实体注入 StringBuilder sb new StringBuilder StringWriter stringWriter new StringWriter sb xmlSe
  • 强化修复经常被误用的身份验证

    当我使用 Fortify 进行扫描时 我在下面的代码中遇到了诸如 经常被误用 身份验证 之类的漏洞 这个问题有解决办法吗 我看过相关帖子 但没能找到解决方案 使用 ESAPI 我提供了主机名和 ipadress 的正则表达式 但它不起作用
  • 以 EXCEL 格式导出 HP Fortify SCA 4.10 结果

    我使用 HP Fortify SCA 4 10 进行扫描 现在我想将原始结果导出为 Excel 格式以进行数据处理以生成数据透视表 任何人都可以建议一个简单或困难的方法来做到这一点 引用此 url 获取 DB 脚本以获取 EXCEL 格式
  • (Fortify) 类别:Android 不良做法:缺少 Google Play 服务更新的安全提供程序(1 期)

    我们正在使用 Fortify 扫描我的 Android 源代码 但我无法摆脱这个问题 类别 Android 不良做法 缺少 Google Play 服务更新的安全提供程序 1 期 Fortify指向这行代码 工具 替换 android al
  • 如何在反序列化之前验证对象

    在我的代码中 我从 JMS 队列接收的 ObjectMessage 对象调用 getObject 方法 Fortify 报告抱怨这个 getObject 方法 其错误名称如下Dynamic Code Evaluation Unsafe De
  • 我可以在 .jar 文件而不是 .java 上运行 fortify 吗?

    我需要使用 Fortify 检查我的项目中使用的第三方库中的漏洞 如果有 对于一些第三方库 我无法访问它们的源文件 我只有附带的 jar 文件 是否可以在 jar 文件上运行 Fortify 我在大多数文档中找到的只是 Fortify 可以

随机推荐

  • 查询包含对不同数据上下文中定义的项目的引用

    我在 Stackoverflow 上阅读了其他几篇文章 但我的问题很简单且不同 我有 2 个独立的数据库 这就是为什么我有两个独立的 Datacontext 这是我的查询 我在其中传递参数并将其绑定到我的 GridView if Sessi
  • Ruby/Rails - 如何根据十进制进行验证?

    如何根据小数位数进行验证 例如 假设我们要存储小数点后最多 2 位小数的酒店评级 4 34 3 76 ETC 我在网上读到了基于您与列绑定的精度 比例截断的 sqlite 因此 如果您的精度为 3 小数位数为 2 并输入 1 34567 则
  • 将特定文件复制到新文件夹,同时保留原始子目录树

    我有一个大目录 其中有许多子目录 我正在尝试对其进行排序 我正在尝试将特定文件类型复制到新文件夹 但我想保留原始子目录 def copyFile src dest try shutil copy src dest except shutil
  • 交换两个变量的 XOR 技巧如何真正在字符串上起作用?

    我刚刚遇到了这段代码 用于在 PHP 中交换两个变量的值
  • 检查 iOS 模拟器类型和版本

    我有以下代码片段来检测 iOS 设备 NSString platformNSString size t size sysctlbyname hw machine NULL size NULL 0 char machine malloc si
  • 我可以在 MySQL 下直接在 SQL 中运行 HTTP GET 吗?

    我很乐意这样做 UPDATE table SET blobCol HTTPGET urlCol WHERE whatever LIMIT n 有代码可以做到这一点吗 我知道这应该是可能的 因为MySQL 文档包括添加执行 DNS 查找的函数
  • 等待与事件处理程序异步

    我对如何最好地处理这种情况感到困惑 我不想等待异步调用的响应 具体来说我有 public async Task
  • 如何在 ASP.Net MVC 5 中动态添加新行

    我正在寻求有关如何在 ASP Net MVC 5 应用程序的创建 Razor 视图中向发票添加新行 LineItems 的帮助 我读过几乎所有类似的问题 但没有一个解决了我认为的简单用例 这是我的发票模型类 public class Inv
  • 如何在 Pygame 中生成第二次点击的位置?

    我正在建造河内塔 它应该像这样工作 您单击第一个塔 从您想要磁盘移动的位置 然后单击第二个塔 您希望磁盘移动到的位置 磁盘应从第一个塔 一个列表 移动到第二个塔 另一个列表 我的问题是 当您第一次单击时 代码会生成位置 不久之后您应该再次单
  • 提取字符串中文件扩展名 (.ps1) 之前的数字

    创建文件的 cmdlet 返回一个文本块 其中包含文件的名称 该文件的格式为字符串 数字 ps1 但数字是随机的 所以我想提取该数字并将其存储在变量中 供参考的文本块 nA using statement must appear befor
  • 单精度不能保证6位数字吗?

    这是code typedef std numeric limits
  • PySide2 在询问时不更新 QLabel 文本

    我正在从 Python 2 7 升级到 Python 3 6 并从 PySide 升级到 PySide2 我首先尝试从 入门 网站获取 Hello World https doc snapshots qt io qtforpython ge
  • Django auth:在哪里放置自定义模板?

    我想使用 Django 1 9 设置用户身份验证 如文档中所述 我将 auth 视图包含在我的项目中urls py like urlpatterns url accounts include django contrib auth urls
  • 如何将两个不同存储库的两个分支合并到一个存储库中?

    我的 Git 存储库的结构如下所示 A B C D E F master branch in separate repo1 A B C D E G H master branch in separate repo2 A H 是简单的提交 正
  • Python/sqlite:获取新插入行的PK

    我正在使用原始 SQL 插入一行 并且需要获取新插入行的主键 我不能假设任何非 PK 插入的数据是唯一的 也不能假设该行是最后插入的行 如果无法使用原始 SQL 那么使用 常规 插入怎么样 我想我必须完全创建一个新的 customID 字段
  • 从php中的for循环推送关联数组

    for 循环应该循环 10 次 当我刚刚打印 fname lname and email我正在获取 10 条数据 工作正常 但我需要将这些值存储在关联数组中 assocDataArray array foreach data as key
  • 如何设置数字样式?

    我正在尝试改变数字的样式 我想在每 3 位数字之间添加一些空格 我会确切地知道这些数字在 html 中的位置 当我从 html 检索号码时 它需要与我输入的号码完全相同 所以我只想设计数字的样式 不修改号码 我可以使用 javascript
  • 当 python 列表迭代是或不是引用时

    有人可以对这两个Python操作在修改列表方面的区别提供一个简洁的解释吗 demo a b c for d in demo d print demo output a b c for c in range len demo demo c p
  • 抑制函数的命令窗口输出

    我正在使用的一个功能有display 在其中 或在命令窗口上显示消息的其他内容 因此当我运行代码时 它会在命令行上输出很多内容 x 1200 这使得事情很难跟踪和观察 有没有办法抑制这个特定函数的输出 用分号结束语句显然没有帮助 您可以尝试
  • 如何纠正 fortify 给出的路径操作错误?

    我需要读取保存在 user home 文件夹中的属性文件 PropsFile System getProperty user home System getProperty file separator x properties Forti