【发布时间】:2021-03-24 07:45:43
【问题描述】:
执行以下代码时出现以下错误。它之前正在工作,现在突然开始抛出这个异常。
import org.owasp.esapi.ESAPI;
import org.owasp.esapi.Encoder;
import org.owasp.esapi.codecs.Codec;
import org.owasp.esapi.codecs.OracleCodec;
public List<SearchUserBean> getSearchUserResult(SearchUserBean searchUserBean){
Codec ORACLE_CODEC = new OracleCodec();
String WHERE="WHERE be.EMPLOYER_ID =comp.business_asso ";
if (searchUserBean.getEmailAddress()!=null && !(searchUserBean.getEmailAddress().isEmpty())) {
WHERE +="AND upper(be.EMAIL_ID) LIKE '" +ESAPI.encoder().encodeForSQL( ORACLE_CODEC, searchUserBean.getEmailAddress().replace("*", "%").toUpperCase().trim()) +"' ";
}
return null;
}
收到错误。
org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException Encoder class (org.owasp.esapi.reference.DefaultEncoder) CTOR threw exception.
at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:129)
at org.owasp.esapi.ESAPI.encoder(ESAPI.java:99)
at com.beacon.search.dao.impl.SearchUserDaoImpl.getSearchUserResult(SearchUserDaoImpl.java:73)
at com.beacon.search.services.impl.SearchUserServiceImpl.getSearchUserResult(SearchUserServiceImpl.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy294.getSearchUserResult(Unknown Source)
at com.beacon.search.controller.SearchUserController.getSearchUserResult(SearchUserController.java:133)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.
【问题讨论】:
-
首先,我希望 ESAPI 代码是临时的,因为如果不是时候使用
PreparedStatement.重写 ESAPI 不如您的 Oracle Provider 的转义工具好。我将首先在这里重写您的代码,以便每个操作都有自己的行。检查您的日志以了解 ESAPI 初始化的错误。这听起来一点也不像是 ESAPI 的问题,而是它是如何被注入到您的环境中的。 -
我们没有做任何代码更改,这是我们从事件日志中得到的,我们也做了一个操作系统补丁会导致这个问题。