java - example - Tratando de usar ESAPI pero obteniendo un error
esapi properties (10)
Estoy intentando usar ESAPI.jar para brindar seguridad a mi aplicación web. Básicamente, acabo de comenzar a usar ESAPI.jar. Pero el problema es que no puedo ejecutar ni siquiera un programa simple utilizando ESAPI. El pequeño fragmento de código es:
String clean = ESAPI.encoder().canonicalize("someString");
Randomizer r=ESAPI.randomizer();
System.out.println(r);
System.out.println(clean);
Me sale este error:
Attempting to load ESAPI.properties via file I/O.
Attempting to load ESAPI.properties as resource file via file I/O.
Not found in ''org.owasp.esapi.resources'' directory or file not readable: D:/Eclipse-Workspace/Test/ESAPI.properties
Not found in SystemResource Directory/resourceDirectory: .esapi/ESAPI.properties
Not found in ''user.home'' (C:/Documents and Settings/user.user) directory: C:/Documents and Settings/user.user/esapi/ESAPI.properties
Loading ESAPI.properties via file I/O failed. Exception was: java.io.FileNotFoundException
Attempting to load ESAPI.properties via the classpath.
ESAPI.properties could not be loaded by any means. Fail. Exception was: java.lang.IllegalArgumentException: Failed to load ESAPI.properties as a classloader resource.
Exception in thread "main" org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException SecurityConfiguration class (org.owasp.esapi.reference.DefaultSecurityConfiguration) CTOR threw exception.
at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:129)
at org.owasp.esapi.ESAPI.securityConfiguration(ESAPI.java:184)
at org.owasp.esapi.ESAPI.encoder(ESAPI.java:99)
at org.rancore.testJasp.TestEsapi.main(TestEsapi.java:59)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:86)
... 3 more
Caused by: org.owasp.esapi.errors.ConfigurationException: ESAPI.properties could not be loaded by any means. Fail.
at org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfiguration(DefaultSecurityConfiguration.java:439)
at org.owasp.esapi.reference.DefaultSecurityConfiguration.<init>(DefaultSecurityConfiguration.java:227)
at org.owasp.esapi.reference.DefaultSecurityConfiguration.getInstance(DefaultSecurityConfiguration.java:75)
... 8 more
Caused by: java.lang.IllegalArgumentException: Failed to load ESAPI.properties as a classloader resource.
at org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfigurationFromClasspath(DefaultSecurityConfiguration.java:667)
at org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfiguration(DefaultSecurityConfiguration.java:436)
... 10 more
He intentado copiar los 3 archivos de propiedades ESAPI en mi carpeta de origen y también configurarlos en la ruta de compilación, pero todavía no lo he logrado. He intentado muchas permutaciones y combinaciones en vano.
Por favor guíame.
El contenido del archivo de propiedades es:
# User Messages
Error.creating.randomizer=Error creating randomizer
This.is.test.message=This {0} is {1} a test {2} message
# Validation Messages
# Log Messages
- Extraer la jarra de esapi.
- crear una carpeta llamada recursos en
org.owasp.esapi
- Copie
ESAPI.properties
a laorg.owasp.esapi.resources
- Construir y desplegar
¿Puedes poner tu archivo (con este nombre) en:
D:/Eclipse-Workspace/Test/ESAPI.properties
Y mostrarnos los contenidos y la excepción de nuevo.
Después de tener este problema y mirar la documentación de instalación (esapi-xxx-dist / documentation / esapi4java-core-xx-install-guide.pdf) encontré una sección muy útil que detallaba que el archivo de propiedades puede estar en cualquier lugar, siempre que flag ( -Dorg.owasp.esapi.resources=path"
) apunta a un directorio en particular. Por ejemplo, si coloco el archivo en una carpeta de" recursos "en la raíz de mi directorio de proyecto, la bandera sería:
-Dorg.owasp.esapi.resources="path/to/project/root/resources"
El archivo ESAPI.properties debe tener más de 3 líneas.
http://code.google.com/p/owasp-esapi-java/source/browse/trunk/configuration/esapi/ESAPI.properties
En mi experiencia, el archivo ESAPI.properties debe estar en la misma carpeta que esapi.jar o debe compilarse en el jar en un directorio de recursos.
/resources/ESAPI.properties
Creo que cualquiera de los dos debería funcionar. Si ESAPI no encuentra el archivo en una ubicación, busca en otras.
El código para eso está aquí alrededor de la línea 612: http://code.google.com/p/owasp-esapi-java/source/browse/trunk/src/main/java/org/owasp/esapi/reference/DefaultSecurityConfiguration.java
Gracias por proporcionar la información.
-Dorg.owasp.esapi.resources = "ruta / a / proyecto / raíz / recursos"
Esta es una buena fuente de información y ha resuelto mi problema.
La referencia SecurityConfiguration administra todas las configuraciones utilizadas por ESAPI en un solo lugar. En esta implementación de referencia, los recursos se pueden colocar en varias ubicaciones, que se buscan en el siguiente orden:
1) Dentro de un directorio configurado con una llamada a SecurityConfiguration.setResourceDirectory ("C: / temp / resources").
2) Dentro del directorio System.getProperty ("org.owasp.esapi.resources"). Puede establecer esto en la línea de comando java de la siguiente manera (por ejemplo):
java -Dorg.owasp.esapi.resources="C:/temp/resources"
Es posible que deba agregar esto al script de inicio que inicia su servidor web. Por ejemplo, para Tomcat, en la secuencia de comandos "catalina" que inicia Tomcat, puede establecer la variable JAVA_OPTS en la cadena -D anterior.
3) Dentro del directorio System.getProperty ("user.home") + "/.esapi" (compatible con la compatibilidad con versiones anteriores) o dentro del directorio System.getProperty ("user.home") + "/ esapi".
4) El primer directorio ".esapi" o "esapi" en el classpath. (El primero para la compatibilidad con versiones anteriores.)
Mire los distintos scripts en ''src / examples / scripts'' y le mostrarán una manera fácil de controlar dónde se encuentran los archivos ESAPI.properties. (Esto es para ESAPI 2.0 o posterior).
Encontrará una copia del archivo ESAPI.properties en "configuración / esapi".
pared de kevin
Solo luché a través de este yo mismo.
- Creé una carpeta llamada esapi en mi directorio C: / users / myname / y cargué ESAPI.properties, validation.properties y ESAPI-AccessControlPolicy.xml, lo que me permitió superar todos los errores de no encontrar archivos. ESAPI busca en varios lugares los archivos. Estoy ejecutando Windows 7 64 bit por cierto.
- Luego tuve que actualizar algunos de los frascos. Debería haberlo hecho desde el principio, pero no lo sabía. Recibía este error: la clase AccessController (org.owasp.esapi.reference.DefaultAccessController) CTOR lanzó la excepción. para cada jarra que tenía que ser una versión más nueva, como colecciones comunes o log4j. En la parte inferior de la traza de la pila se haría referencia al frasco ofensivo.
Cuando agregué los archivos más nuevos del directorio esapi lib, ¡todo funcionó!
Recibí este mensaje al final en mi consola: ESAPI.accessController found: org.owasp.esapi.reference.DefaultAccessController@1cb8deef
Nota: Hay un archivo ESAPI_en_US.properties, pero es el que tiene solo unas pocas líneas. Simplemente use el archivo en: / esapi-2.1.0-dist / src / test / resources / esapi / ESAPI.properties. Ese es el archivo completo completo.
Yo también tuve el mismo problema. Lo resolví usando un poco de solución James Drinkard. Básicamente, lo que hice fue crear una nueva carpeta con el nombre ESAPI y agregar el archivo ESAPI.properties, Validation.properties y ESAPI-AccessControlPolicy.xml. Y lo archivó en un archivo jar y se agregó a la carpeta lib en WebContet / WEB-INF y se construyó en la ruta y funcionó.
* Para archivarlo en un archivo jar, utilicé el comando de Windows mover ESAPI ESAPI.jar
extraer el archivo jar agregar propiedades en la carpeta de recursos.
inicialmente obteniendo el mismo error, después de actualizar el archivo de propiedades funcionó para mí