Ich versuche, ESAPI.jar zu verwenden, um Sicherheit für meine Webanwendung bereitzustellen. Grundsätzlich habe ich gerade mit ESAPI.jar ... begonnen. Das Problem ist jedoch, dass ich nicht einmal ein einfaches Programm mit ESAPI ausführen kann Codeausschnitt ist:
String clean = ESAPI.encoder().canonicalize("someString");
Randomizer r=ESAPI.randomizer();
System.out.println(r);
System.out.println(clean);
Ich erhalte diesen Fehler:
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
Ich habe versucht, die 3 ESAPI-Eigenschaftendateien in meinem Quellordner zu kopieren und sie auch im Erstellungspfad zu konfigurieren, aber es ist mir immer noch nicht gelungen. Ich habe viele Permutationen und Kombinationen ohne Erfolg ausprobiert.
Bitte führen Sie mich.
Der Inhalt der Eigenschaftsdatei lautet:
# User Messages
Error.creating.randomizer=Error creating randomizer
This.is.test.message=This {0} is {1} a test {2} message
# Validation Messages
# Log Messages
Die Datei ESAPI.properties sollte mehr als drei Zeilen enthalten.
http://code.google.com/p/owasp-esapi-Java/source/browse/trunk/configuration/esapi/ESAPI.properties
Nach meiner Erfahrung muss sich die Datei ESAPI.properties entweder im selben Ordner wie die esapi.jar befinden oder in das jar in einem Ressourcenverzeichnis kompiliert werden.
/resources/ESAPI.properties
Ich glaube, dass beide funktionieren sollten. Wenn ESAPI die Datei nicht an einem Ort findet, sucht sie an anderen Stellen.
Der Code dafür ist hier in Zeile 612: http://code.google.com/p/owasp-esapi-Java/source/browse/trunk/src/main/Java/org/owasp/esapi/reference/ DefaultSecurityConfiguration.Java
Ich habe mich gerade durch diese Mühe gekämpft.
Als ich die neueren Gläser aus dem esapi lib-Verzeichnis hinzufügte, funktionierte alles einfach!
Ich habe diese Nachricht am Ende in meiner Konsole erhalten: ESAPI.accessController found: [email protected]
Hinweis: Es gibt eine ESAPI_en_US.properties-Datei, die jedoch nur wenige Zeilen enthält. Verwenden Sie einfach die Datei in:\esapi-2.1.0-dist\src\test\resources\esapi\ESAPI.properties. Das ist die vollständige vollständige Datei.
Die Referenz SecurityConfiguration verwaltet alle von der ESAPI verwendeten Einstellungen an einer einzigen Stelle. In dieser Referenzimplementierung können Ressourcen an mehreren Stellen platziert werden, die in der folgenden Reihenfolge gesucht werden:
1) Innerhalb eines Verzeichnisses mit einem Aufruf an SecurityConfiguration.setResourceDirectory ("C:\temp\resources").
2) Innerhalb des Verzeichnisses System.getProperty ("org.owasp.esapi.resources"). Sie können dies in der Java-Befehlszeile wie folgt einstellen (zum Beispiel):
Java -Dorg.owasp.esapi.resources="C:\temp\resources"
Möglicherweise müssen Sie dies dem Startskript hinzufügen, das Ihren Webserver startet. Für Tomcat können Sie beispielsweise im Skript "Catalina", das Tomcat startet, die Variable Java_OPTS auf die Zeichenfolge -D oben setzen.
3) Innerhalb des Verzeichnisses System.getProperty ("user.home") + "/.esapi" (zur Abwärtskompatibilität unterstützt) oder innerhalb des Verzeichnisses System.getProperty ("user.home") + "/ esapi".
4) Das erste Verzeichnis ".esapi" oder "esapi" im Klassenpfad. (Ersteres für Rückwärtskompatibilität.)
Nachdem ich dieses Problem hatte und in der Installationsdokumentation nachgesehen hatte (esapi-xxx-dist\documentation\esapi4Java-core-xx-install-guide.pdf), habe ich einen sehr nützlichen Abschnitt gefunden, in dem detailliert beschrieben wird, dass die Eigenschaftendatei an einer beliebigen Stelle sein kann, vorausgesetzt, eine VM flag (-Dorg.owasp.esapi.resources=path"
) zeigt auf ein bestimmtes Verzeichnis. Wenn ich zum Beispiel die Datei in einem "Ressourcen" -Ordner im Stammverzeichnis meines Projektverzeichnisses stecke, würde das Flag folgendermaßen aussehen:
-Dorg.owasp.esapi.resources="path\to\project\root\resources"
org.owasp.esapi
einen Ordner mit dem Namen RessourcenESAPI.properties
in den org.owasp.esapi.resources
kopierenextrahieren Sie die jar fügen Sie die Eigenschaftendatei im Ressourcenordner hinzu.
beim ersten Update der Eigenschaftendatei funktionierte es für mich
Schauen Sie sich die verschiedenen Skripte unter 'src/beispiele/scripts' an und sie zeigen Ihnen einen einfachen Weg, um zu steuern, wo sich die Dateien ESAPI.properties befinden. (Dies ist für ESAPI 2.0 oder höher.)
Eine Kopie der Datei ESAPI.properties finden Sie unter 'configuration/esapi'.
-Kevin Wand
Können Sie Ihre Datei (mit diesem Namen) einfügen in:
D:\Eclipse-Workspace\Test\ESAPI.properties
Und zeigen Sie uns noch einmal den Inhalt und die Ausnahme.
Vielen Dank für die Bereitstellung der Informationen
-Dorg.owasp.esapi.resources = "Pfad\zu\Projekt\Stamm\Ressourcen"
Dies ist eine gute Informationsquelle und hat mein Problem gelöst
Ich hatte auch das gleiche Problem. Ich habe es mit etwas James Drinkard-Lösung gelöst. Im Grunde habe ich einen neuen Ordner mit dem Namen ESAPI erstellt und die Datei ESAPI.properties, Validation.properties und die ESAPI-AccessControlPolicy.xml hinzugefügt. Und archivierte es in einer JAR-Datei und fügte es in den lib-Ordner unter WebContet/WEB-INF ein, baute es in den Pfad und es funktionierte.
* Um es in einer JAR-Datei zu archivieren, habe ich den Windows-Befehl ESAPI ESAPI.jar verwendet