java - 如何使用 ESAPI 修复资源注入(inject) (URL) 问题

标签 java esapi

我是 Stack Overflow 论坛的新手。我对修复强化扫描问题有疑问。

HP Fortify 扫描报告以下代码的资源注入(inject)问题。

String testUrl = "http://google.com";
URL url = null;

try {
   url = new URL(testUrl);
} catch (MalformedURLException mue) {
   log.error("MalformedUrlException URL " + testUrl + " Exception : " + mue);
}

在上面的代码中,强化显示资源注入(inject)行 => url = new URL(testUrl);

我已使用 ESAPI 对 URL 验证进行了以下代码更改来修复此问题,

String testUrl = "http://google.com";
URL url = null;

try {
   String canonURL = ESAPI.encoder().canonicalize(strurl, false, false);
   if(ESAPI.validator().isValidInput("URLContext", canonURL, "URL", canonURL.length(), false)) {
       url = new URL(canonURL);
   } else {
       log.error("In Valid script URL passed"+ canonURL);
   }
} catch (MalformedURLException mue) {
   log.error("MalformedUrlException URL " + canonURL + " Exception : " + mue);
}

但是,Fortify 扫描仍报告为错误。它没有修复这个问题。是不是做错了什么?

任何解决方案都会有很大帮助。

谢谢

Marimuthu.M

最佳答案

我认为这里真正的问题不是 URL 可能存在某种格式错误,而是 URL 可能未引用有效的站点。更具体地说,如果我(坏人)能够使您的 URL 指向我的网站,那么您可以从我的位置获取未经测试的数据,并且我可以返回可能用于危害您的系统的数据。我可能会用它来表示返回“坏人鲍勃”的记录,使鲍勃看起来像个好人。

我怀疑在您的代码中您没有在字符串中设置硬编码值,因为这通常用诸如

之类的词来描述

When an application permits a user input to define a resource, like a file name or port number, this data can be manipulated to execute or access different resources.

(参见 https://www.owasp.org/index.php/Resource_Injection )

我认为正确的回应应该是以下内容的组合:

  1. 不要从用户那里获取结果,而是使用输入从您自己的内部列表中进行选择。

  2. 认为该值来自可信来源。例如,从严格控制的数据库或配置文件中读取。

您不需要删除警告,您需要证明您了解风险并说明为什么可以在您的案例中使用该值。

关于java - 如何使用 ESAPI 修复资源注入(inject) (URL) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19399518/

相关文章:

java - 如何解决文件名或路径的外部控制 (CWE ID 73)

coldfusion - 如何在 ColdFusion 中使用多组验证尝试实现 OWASP ESAPI 验证器?

java - 使用 JavaEncryptor 的 ESAPI 对称加密

java - 使用 OWASP 修复 java 中的跨站脚本漏洞

javax 与 java 包

java - Spring Boot、Gradle 和非 Maven 依赖项

java - 如何使用java创建一个内网邮件系统

java - Maven 2.2.1 优化项目构建时间

java - spring hibernate 5 错误已经值 [org.springframework.orm.hibernate5.SessionHolder for key bind to thread

Java 安全与 ESAPI