web-dev-qa-db-fra.com

Essayer d'utiliser ESAPI mais obtenir une erreur

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
18
AngelsandDemons

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

22
Jason Dean

Je me suis juste battu à travers celui-ci moi-même. 

  1. J'ai créé un dossier appelé esapi dans mon répertoire C:/users/myname/et chargé les fichiers ESAPI.properties, validation.properties et ESAPI-AccessControlPolicy.xml qui m'ont permis de surmonter toutes les erreurs de recherche de fichiers. ESAPI recherche les fichiers à plusieurs endroits. J'utilise Windows 7 64 bits en passant.
  2. Ensuite, j'ai dû mettre à jour certains des pots. J'aurais dû le faire depuis le début, mais je ne le savais pas. J'avais cette erreur: Classe AccessController (org.owasp.esapi.reference.DefaultAccessController) CTOR a lancé une exception. pour chaque fichier jar nécessitant une version plus récente, comme les collections commons ou log4j. Au bas de la trace de la pile, il référencerait le fichier JAR incriminé. 

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.

3
James Drinkard

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.) 

1
Petr Jung

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"
1
schil227
  1. Extraire le pot d'esapi
  2. créer un dossier nommé ressources sous org.owasp.esapi
  3. copier ESAPI.properties dans le org.owasp.esapi.resources
  4. Construire et déployer
0
Nethaji Narasimalu

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

0
Shobhit Agarwal

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

0
Kevin Wall

Pouvez-vous mettre votre fichier (avec ce nom) dans:

D:\Eclipse-Workspace\Test\ESAPI.properties

Et montrez-nous le contenu et l'exception à nouveau.

0
yoprogramo

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

0
Shankar P

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.

0
Vasu J