J'essaie d'utiliser la bibliothèque OWASP ESAPI dans mon application Web pour échapper aux paramètres de demande dans les JSP comme ci-dessous ESAPI.encoder (). EncodeForHTML (request.getParameter ()).
J'ai ajouté esapi-2.1.0.jar sous WEB-INF/lib mais j'obtiens l'exception ci-dessous
org.owasp.esapi.errors.ConfigurationException: ESAPI.properties n'a pas pu être chargé par aucun moyen. Échouer. org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfiguration (DefaultSecurityConfiguration.Java:439)
Mais je n'ai pas pu trouver ESAPI.properties dans le fichier JAR. Une idée où je peux obtenir ça? Où dois-je également placer ce fichier de propriétés? Veuillez aider.
Voici la référence: Guide d'installation ESAPI .
Vous pouvez télécharger ESAPI.properties depuis ici .
Vous pouvez créer vous-même le fichier ESAPI.properties et y placer le même contenu. Il doit être placé dans votre dossier 'src/main/resources'.
Vous aurez également besoin du fichier validation.properties pour gérer XSS, qui doit être placé dans le dossier 'src/test/resources'.
Veuillez vous assurer de changer le nom de l'application dans ces fichiers de propriétés pour votre application comme dans
Validator.Redirect=^\\/test.*$
test
doit être remplacé par le nom de votre application.
Je cherchais le même fichier que lors du déploiement de ma webapp que j'obtenais -
Mar 08, 2017 1:23:12 PM org.Apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [mvc-dispatcher] in context with path [/WebDynamo] threw exception [org.owasp.esapi.errors.ConfigurationException: Java.lang.reflect.InvocationTargetException SecurityConfiguration class (org.owasp.esapi.reference.DefaultSecurityConfiguration) CTOR threw exception.] with root cause
Java.lang.IllegalArgumentException: Failed to load ESAPI.properties as a classloader resource.
at org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfigurationFromClasspath(DefaultSecurityConfiguration.Java:667)
Quoi qu'il en soit pour ma webapp, j'ai juste ajouté ESAPI.properties dans le dossier racine source (dossier src) (ne l'ajoutez dans aucun package) . Et le fichier est juste vide. Et l'application Web fonctionne très bien. Je vois les journaux suivants dans la webapp, donc si vous vous demandez où ce fichier est recherché, référez-vous à ceci -
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: /Applications/Eclipse.app/Contents/MacOS/ESAPI.properties
Not found in SystemResource Directory/resourceDirectory: .esapi/ESAPI.properties
Not found in 'user.home' (/Users/athakur) directory: /Users/athakur/esapi/ESAPI.properties
Loading ESAPI.properties via file I/O failed. Exception was: Java.io.FileNotFoundException
Attempting to load ESAPI.properties via the classpath.
SUCCESSFULLY LOADED ESAPI.properties via the CLASSPATH from '/ (root)' using current thread context class loader!
SecurityConfiguration for Validator.ConfigurationFile not found in ESAPI.properties. Using default: validation.properties
Attempting to load validation.properties via file I/O.
Attempting to load validation.properties as resource file via file I/O.
Not found in 'org.owasp.esapi.resources' directory or file not readable: /Applications/Eclipse.app/Contents/MacOS/validation.properties
Not found in SystemResource Directory/resourceDirectory: .esapi/validation.properties
Not found in 'user.home' (/Users/athakur) directory: /Users/athakur/esapi/validation.properties
Loading validation.properties via file I/O failed.
Attempting to load validation.properties via the classpath.
validation.properties could not be loaded by any means. fail. Exception was: Java.lang.IllegalArgumentException: Failed to load ESAPI.properties as a classloader resource.
SecurityConfiguration for ESAPI.printProperties not found in ESAPI.properties. Using default: false
SecurityConfiguration for Encryptor.CipherTransformation not found in ESAPI.properties. Using default: AES/CBC/PKCS5Padding
SecurityConfiguration for ESAPI.Encoder not found in ESAPI.properties. Using default: org.owasp.esapi.reference.DefaultEncoder
SecurityConfiguration for ESAPI.Logger not found in ESAPI.properties. Using default: org.owasp.esapi.reference.JavaLogFactory
SecurityConfiguration for Logger.LogApplicationName not found in ESAPI.properties. Using default: true
SecurityConfiguration for Logger.LogServerIP not found in ESAPI.properties. Using default: true
SecurityConfiguration for Logger.ApplicationName not found in ESAPI.properties. Using default: DefaultName
Je suis sûr que ceux-ci sont configurables et que d'autres fichiers peuvent également être ajoutés au dossier src. J'ai aussi trouvé ce fichier dans -
https://github.com/OWASP/EJSF/blob/master/esapi_master_FULL/WebContent/ESAPI.properties
Le fichier est assez gros pour coller son contenu ici, mais en fonction des valeurs par défaut qu'il définit conformément aux journaux ci-dessus, les choses suivantes sont requises -
ESAPI.printProperties=true
Encryptor.CipherTransformation=AES/CBC/PKCS5Padding
ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder
# Log4JFactory Requires log4j.xml or log4j.properties in classpath - http://www.laliluna.de/log4j-tutorial.html
ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory
# Determines whether ESAPI should log the application name. This might be clutter in some single-server/single-app environments.
Logger.LogApplicationName=true
# Determines whether ESAPI should log the server IP and port. This might be clutter in some single-server environments.
Logger.LogServerIP=true
# Set the application name if these logs are combined with other applications
Logger.ApplicationName=ExampleApplication
Ok puisque les liens ci-dessus sont tous cassés ou seront obsolètes dans un certain temps (par exemple, un lien vers une version spécifique) voici le lien Github:
https://github.com/ESAPI/esapi-Java-legacy/tree/develop/configuration/esapi