jndi - 动态代码评估 : JNDI Reference Injection/Dynamic Code Evaluation: Code Injection

标签 jndi code-injection fortify

我已经为我的模块之一运行了强化扫描,我已经收到了 动态代码评估:JNDI 引用注入(inject)漏洞问题 显示在下一行

lookup(dataSource)

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

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

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

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

最佳答案

  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() function is evil, never use it. Needing to use eval usually indicates a problem in your design.

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

关于jndi - 动态代码评估 : JNDI Reference Injection/Dynamic Code Evaluation: Code Injection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42919002/

相关文章:

java - 谁在服务器中配置的 JNDI 数据源上执行连接?

wildfly - JBoss 7.1.1 在运行时更改 JNDI 绑定(bind)

java - 注入(inject)的父类(super class) Bean 如何注入(inject)错误的实例(子类 Bean 实例)?

windows - 如何在 Windows 应用程序中对加扰数据包进行逆向工程?

java - HP Fortify 误报硬编码密码 - Java

java - Fortify 在分析中包含生成源

java - 如何从运行在服务器外部(Web 应用程序)的 Spring hibernate 项目中使用 JBoss AS7 JNDI 数据源?

c++ - 如何从注入(inject)进程的内存空间重建数据结构?

laravel - 在 laravel fortify 中启用记住我选项

mysql - JNDI TOMCAT7 亚马逊 EC2