【问题标题】:Dynamic Code Evaluation: JNDI Reference Injection/Dynamic Code Evaluation: Code Injection动态代码评估:JNDI 参考注入/动态代码评估:代码注入
【发布时间】:2017-03-21 05:23:38
【问题描述】:

我已经为我的一个模块运行了强化扫描并且我收到了 动态代码评估:JNDI 参考注入漏洞问题 显示在下面的行

查找(数据源)

数据源是动态的。我应该怎么做才能防止这种情况发生 无法使数据源静态,因为它破坏了项目功能

当我运行强化扫描时,我还遇到了动态代码评估问题:代码注入。它显示在我使用 eval 函数的地方,该函数用于评估在文本框中输入的表达式并处理相同的脚本。

var elem=document.getElementById("jse"); eval(elem.value);

我们可以删除哪些内容来解决这些漏洞而不影响其功能。

【问题讨论】:

    标签: jndi code-injection fortify


    【解决方案1】:
    1. 减轻这种情况的标准方法是拥有一个dataSource 变量的有效值列表,并在进行查找之前根据该列表进行验证。

      从理论上讲,这些方法会起作用:

       List<String> lookup = new ArrayList<>();
       lookup.add("datasource1");
       lookup.add("datasource2");
       lookup.add("datasource3");
       ....
      
       if (lookup.contains(userInputDatasource)) {
           doLookup(userInputDatasource);
       } else {
           throw Exception("Datasource not found;")
       }
      
    2. JavaScript eval 是 not recommended:

    eval() 函数是邪恶的,永远不要使用它。需要使用 eval 通常表明您的设计存在问题。

    也就是说,可以使用与上述类似的方法来验证输入是否仅包含有效值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2017-01-01
      • 2011-07-29
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      相关资源
      最近更新 更多