J'essaie d'utiliser ESAPI.jar pour sécuriser mon application Web.En gros, je viens de commencer à utiliser ESAPI.jar . Mais le problème est que je ne parviens pas à exécuter un simple programme utilisant ESAPI . L'extrait de code est:
String clean = ESAPI.encoder().canonicalize("someString");
Randomizer r=ESAPI.randomizer();
System.out.println(r);
System.out.println(clean);
Je reçois cette erreur:
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
J'ai essayé de copier les 3 fichiers de propriétés ESAPI dans mon dossier source et de les configurer sur le chemin de génération, mais je n'ai toujours pas réussi. J'ai essayé beaucoup de permutations et de combinaisons en vain.
Guidez-moi s'il-vous-plaît.
Le contenu du fichier de propriétés est:
# User Messages
Error.creating.randomizer=Error creating randomizer
This.is.test.message=This {0} is {1} a test {2} message
# Validation Messages
# Log Messages
Le fichier ESAPI.properties doit comporter plus de 3 lignes.
http://code.google.com/p/owasp-esapi-Java/source/browse/trunk/configuration/esapi/ESAPI.properties
D'après mon expérience, le fichier ESAPI.properties doit se trouver dans le même dossier que le fichier esapi.jar ou être compilé dans le fichier jar, dans un répertoire de ressources.
/resources/ESAPI.properties
Je crois que l'un ou l'autre devrait travailler. Si ESAPI ne trouve pas le fichier, il en cherche un autre.
Le code correspondant se trouve à la ligne 612: http://code.google.com/p/owasp-esapi-Java/source/browse/trunk/src/main/Java/org/owasp/esapi/reference/ DefaultSecurityConfiguration.Java
Je me suis juste battu à travers celui-ci moi-même.
Quand j'ai ajouté les nouveaux pots du répertoire esapi lib, tout fonctionnait!
J'ai reçu ce message à la fin de ma console: ESAPI.accessController found: org.owasp.esapi.reference.DefaultAccessController@1cb8deef
Remarque: Il existe un fichier ESAPI_en_US.properties, mais il ne contient que quelques lignes. Utilisez simplement le fichier dans:\esapi-2.1.0-dist\src\test\resources\esapi\ESAPI.properties. C'est le dossier complet complet.
La référence SecurityConfiguration gère tous les paramètres utilisés par ESAPI à un seul endroit. Dans cette implémentation de référence, les ressources peuvent être placées à plusieurs emplacements, dans lesquels la recherche s'effectue dans l'ordre suivant:
1) Dans un répertoire défini avec un appel à SecurityConfiguration.setResourceDirectory ("C:\temp\resources").
2) Dans le répertoire System.getProperty ("org.owasp.esapi.resources"). Vous pouvez définir ceci sur la ligne de commande Java comme suit (par exemple):
Java -Dorg.owasp.esapi.resources="C:\temp\resources"
Vous devrez peut-être ajouter ceci au script de démarrage qui démarre votre serveur Web. Par exemple, pour Tomcat, dans le script "catalina" qui démarre Tomcat, vous pouvez définir la variable Java_OPTS sur la chaîne -D ci-dessus.
3) Dans le répertoire System.getProperty ("user.home") + "/.esapi" (pris en charge pour la compatibilité ascendante) ou dans le répertoire System.getProperty ("user.home") + "/ esapi".
4) Le premier répertoire ".esapi" ou "esapi" sur le classpath. (L'ancien pour la compatibilité ascendante.)
Après avoir rencontré ce problème et consulté la documentation d'installation (esapi-xxx-dist\documentation\esapi4Java-core-xx-install-guide.pdf), j'ai trouvé une section très utile qui indiquait que le fichier de propriétés pouvait être n'importe où, à condition flag (-Dorg.owasp.esapi.resources=path"
) pointe vers un répertoire particulier. Par exemple, si je colle le fichier dans un dossier "ressources" à la racine du répertoire de mon projet, l'indicateur sera:
-Dorg.owasp.esapi.resources="path\to\project\root\resources"
org.owasp.esapi
ESAPI.properties
dans le org.owasp.esapi.resources
extraire le fichier jar add du fichier de propriétés sous le dossier des ressources.
ayant initialement la même erreur, après la mise à jour du fichier de propriétés, cela a fonctionné pour moi
Examinez les différents scripts sous "src/exemples/scripts" et ils vous montreront un moyen simple de contrôler où se trouvent les fichiers ESAPI.properties. (Ceci est pour ESAPI 2.0 ou version ultérieure.)
Vous trouverez une copie du fichier ESAPI.properties sous "configuration/esapi".
mur de kevin
Pouvez-vous mettre votre fichier (avec ce nom) dans:
D:\Eclipse-Workspace\Test\ESAPI.properties
Et montrez-nous le contenu et l'exception à nouveau.
Merci de fournir les informations
-Dorg.owasp.esapi.resources = "chemin\vers\projet\racine\ressources"
C'est une bonne source d'informations et a résolu mon problème
J'ai eu le même problème aussi. Je l'ai résolu en utilisant un peu de solution James Drinkard. Ce que j'ai essentiellement fait est de créer un nouveau dossier avec le nom ESAPI et d'ajouter le fichier ESAPI.properties, Validation.properties et le fichier ESAPI-AccessControlPolicy.xml. Et archivé dans un fichier JAR et ajouté au dossier lib sous WebContet/WEB-INF et le construire sur le chemin d'accès et cela a fonctionné.
* Pour l'archiver dans un fichier jar, j'ai utilisé la commande windows move ESAPI ESAPI.jar.