当前位置: 首页 > 面试题库 >

Java中的JSON注入强化错误

夏侯嘉荣
2023-03-14
问题内容

我从客户端获取 SUBSCRIPTION_JSON ,将其转换为String,然后使用gson库将其设置为Model
Object。在Fortify安全性上运行代码时,它在以下代码上给我Json注入错误,并显示以下消息:

这是错误:

On line 159 of ActionHelper.java, the method jsonToObject() writes unvalidated input into JSON. This call could allow an attacker to inject arbitrary elements or attributes into the JSON entity.The method writes unvalidated input into JSON. This call could allow an attacker to inject arbitrary elements or attributes into the JSON entity.

Explanation
JSON injection occurs when:

1. Data enters a program from an untrusted source.

In this case the data enters at getString() in **SubscriptionAction.java** at line 355.


2. The data is written to a JSON stream.

In this case the JSON is written by fromJson() in **ActionHelper.java** at line 159.

SubscriptionAction.java

final String subscriptionJson = subscriptionForm.getString(SUBSCRIPTION_JSON);

ActionHelper.java

public static <T> T jsonToObject(final String jsonString, final Class<T> className) {
        T object = null;
        if (StringUtils.isNotBlank(jsonString)) {
            final Gson gson = (Gson) BeanLocator.getInstance().getBean(GSON);
            object = gson.fromJson(jsonString, className);
        }
        return object;
    }

SUBSCRIPTION_JSON- >

{
    "subscriptions": [{
        "attributeId": "1",
        "items": [{
            "strId": "ALL",
            "nodeType": "G"
        }, {
            "strId": "VO_ENTRY_TIMING_DELAY",
            "nodeType": "L"
        }, {
            "strId": "O_INVALID",
            "nodeType": "L"
        }, {
            "strId": "O_LINE_INVALID",
            "nodeType": "L"
        }, {
            "strId": "V_INVALID",
            "nodeType": "L"
        }, {
            "strId": "V_ADDRESS_INVALID",
            "nodeType": "L"
        }]
    }, {
        "attributeId": "2001",
        "items": [{
            "strId": "OSTBU",
            "nodeType": "L"
        }]
    }]
}

问题答案:

在将其设置为Model
Object之前,您必须验证接收到的json以确保它准确包含预期的内容。例如,您可以实现一个验证器,该验证器使用所需的字段/格式模式检查json。



 类似资料:
  • 我的项目中有下面的代码 加强在上述代码中显示xml注入。如何解决这种xml注入?

  • 我试图修复XEE问题,并尝试了其他选项,但不起作用。如果有任何指示,那就太好了。 下面是我的代码片段。。

  • 当我使用强化工具扫描时,我在“XML外部实体注入”下遇到了一些问题。 这是它显示错误的地方。根据fortify的建议,我给出了以下修复方法 但是问题仍然没有解决。如何解决这个问题?

  • 关于使用强化代码注释的名称和语法,我有一个问题。 简短、简短、非常简短的版本是:我正在寻找一个指南/手册,它将列出可用的代码内注释,并为它们的预期用途提供一个示例。专门用于从Fortify扫描结果中省略一组“SQL注入”和“SQL注入:持久性”问题。 TL;博士;细节: 强化版:19.1.0 平台:Java 8;Web App(Weblogic 12.2.1.4.0(12c));Redhat Un

  • 本文向大家介绍Java基础强化训练输入错误即结束进程,包括了Java基础强化训练输入错误即结束进程的使用技巧和注意事项,需要的朋友参考一下 银行取款的时候有一个规则,就是连续输入密码错误三次账户会被冻结。那么咱们现阶段的Java基础有没有能力去编写出一段类似的代码呢?请接着往下看。 输入不同的值会有不同的结果。 输出1: 输出2: 在这里跟大家普及一下,四叶玫瑰数总共有三个,分别是:1634,82

  • 您好,我正在尝试生成报告,但我收到如下警告,并且没有生成报告。你能帮我一下吗? [警告]: NST文件: /Users/xxxx/.fortify/sca6.2/build/yyyyy/Classes/AFNetworking/AFHTTPClient.m.nst不存在或已删除。 我使用以下步骤扫描代码。我在扫描代码的第三步得到警告,除了第一步 > 源分析器-4.21-b${project}-清洁