我已经为我的其中一个模块运行了强化扫描,我收到了 动态代码评估:JNDI Reference Injection漏洞问题 显示在下面的行
查找(数据源)
数据源是动态的。我该怎么办才能防止这种情况发生 无法使数据源保持静态,因为它破坏了项目功能
当我运行强化扫描时,我还发出了动态代码评估:代码注入问题。它显示在我使用eval函数的地方,该函数用于评估在文本框中输入的表达式并处理相同的脚本。
var elem = document.getElementById(" jse"); 的eval(elem.value);
我们可以删除以解决这些漏洞而不影响其功能。
答案 0 :(得分: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("Datasoruce not found;")
}
JavaScript评估为not recommended:
eval()
函数是邪恶的,永远不要使用它。通常需要使用eval表示您的设计有问题。
说与上述类似的方法可用于验证输入中仅包含有效值