【问题标题】:resource injection issue at creating new url(resource);创建新 url(resource) 时的资源注入问题;
【发布时间】:2021-02-06 04:42:11
【问题描述】:

在我的项目中,资源注入问题出现在创建新 URL(资源)(四十次静态扫描)时。 如何解决这个问题?

String username = "james";
String resource = "https://someWebsite.com/api"+username;
URL url = new URL(resource); //here it is giving resource injection issue in fortify scan
System.setProperty("https.proxySet", "true");
System.setProperty("https.proxyHost", "11.09.11.111");
System.setProperty("https.proxyPort", "90");        
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();

【问题讨论】:

  • 第一步是了解调查结果告诉你什么。你在这个代码 sn-p 中做错了什么?我可以告诉你这是第 2 行,所以有一个很大的提示。

标签: java spring security spring-security esapi


【解决方案1】:

我立即看到这条线:

String resource = "https://someWebsite.com/api"+username;

我知道我们遇到了麻烦。

为什么?我提示您发表评论,因为您需要问自己“我在这里做什么?”

您最初的反应可能是:“我将用户名连接到 URI 字符串。这是一个基于 REST 的 Web 服务,有什么大不了的?”

这是因为您没有进行过标记,所以按重要性排序:

  1. 用户控制参数的输出转义
  2. 用户控制参数的输入编码。

avgvstvs 在这里做了什么?明明是输入,为什么还要说输出?

作为一名程序员,您要承担他们在学校从未教过您的责任。在开发应用程序时,您必须了解所使用变量的数据流。您需要将所有输入分为 2 类:

  1. 添加 WE(服务器)控件
  2. 填充用户(敌人)控件

您需要考虑使用您系统的意图是邪恶的用户;这并不是要让您认为所有用户都是敌人——尽管这里的一些资深人士可能会对此提出异议——但是当您编写安全代码时,您需要考虑对手将如何滥用您的代码。

一旦您了解了外部背景,您现在应该会开始更加清楚。

您网站的任何用户都可以点击“f12”并调用允许他们轻松绕过任何可能存在的客户端保护的工具:来自 anyAny 输入用户应被视为潜在恶意。防止滥用的主要防御措施是我上面所说的:转义以获取正确的上下文,并验证输入。

在使用任何值之前,应该对其进行验证。正如目前所写的那样,我可以模拟使用该 API url 注册的任何用户。几个输入检查在这里有意义:

  1. 相关用户是否经过身份验证?
  2. 系统中确实存在相关用户吗?
  3. 用户是否有权使用此 URI 指示的资源?
  4. 用户是否有有效的会话?
  5. 我的编程平台使用什么字节编码,输入是否符合这个?
  6. 我们是否可以防止用户尝试在字节级别以及我们以后可能使用的interperter 级别使用多种或混合编码?

您的网络框架的构建和使用可能已经回答了其中一些问题,但我建议您了解您的框架如何保护所有这些问题的应用程序。根据经验,1、3 和 4 几乎总是由应用程序的其他部分管理,但在您知道之前,请始终提出这些问题。

为什么要输出编码/转义?这不是输入吗?

当您决定将用户名连接到 URI,然后继续发出请求时,问问自己,“我到底在做什么?”

显然目的是获取用户名,将其连接到将要使用的值...

任何时候你使用一个变量——你需要再次问自己所有这些问题,再加上一个:

  1. 验证此值后,我会将其交给哪个解释器?

在这种情况下,您将值传递到数据上下文中,表明它将在 URI 中使用。这意味着数据必须经过正确编码和转义才能在 URI 中使用,这样我们就不会在我们的堆栈下游引入错误和可能的进一步漏洞。

解决这一发现:

回答用户名变量的所有 7 个问题,然后从您的应用程序堆栈中选择适合您的方法。您确实标记了 esapi,但 esapi 无法为您解决所有 7 个问题,只有输入验证和输出编码......您的应用程序的安全框架可能已经为您提供了这些问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    相关资源
    最近更新 更多