我已经为我的模块之一运行了强化扫描,我已经收到了 动态代码评估:JNDI 引用注入(inject)漏洞问题 显示在下一行
lookup(dataSource)
数据源是动态的。我应该怎么做才能防止这种情况发生 不能使数据源静态,因为它破坏了项目功能
当我运行强化扫描时,我还遇到了动态代码评估问题:代码注入(inject)。它显示在我使用 eval 函数的地方,该函数用于评估在文本框中输入的表达式并处理相同的脚本。
var elem=document.getElementById("jse"); eval(elem.value);
我们可以删除什么来解决这些漏洞而不影响其功能。
最佳答案
减轻这种情况的标准方法是为
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;") }
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/