类型: 安全缺陷
程序运行时动态解析源代码指令将易于受到攻击。
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine scriptEngine = scriptEngineManager.getEngineByExtension("js");
userOps = request.getParameter("operation");
Object result = scriptEngine.eval(userOps);
如果operation参数是合法的,程序将会正常运行。例如:当该值为”8 + 7 * 2”时,result变量被赋予的值将为22。
如果攻击者提供一个恶意的输入,程序在没有进行合理校验的情况,将产生代码注入攻击。如Javascript允许调用Java对象,如果攻击者计划将”java.System.RunTime.exec(“shutdown -h now”)”的值指定为operation,主机系统就会执行关机命令。