gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:38:28 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com