webentwicklung-frage-antwort-db.com.de

Es wurde versucht, ESAPI zu verwenden, aber es wurde ein Fehler angezeigt

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

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

22
Jason Dean

Ich habe mich gerade durch diese Mühe gekämpft. 

  1. Ich erstellte einen Ordner mit dem Namen esapi in meinem Verzeichnis C:/users/myname/und lud die Dateien ESAPI.properties, validation.properties und ESAPI-AccessControlPolicy.xml hoch, die mich an allen nicht gefundenen Dateifehlern hinderten. ESAPI sucht an verschiedenen Stellen nach den Dateien. Ich arbeite übrigens mit Windows 7 64 Bit.
  2. Dann musste ich einige der Gläser aktualisieren. Ich hätte das von Anfang an tun sollen, aber ich wusste es nicht. Ich habe diese Fehlermeldung erhalten: AccessController-Klasse (org.owasp.esapi.reference.DefaultAccessController) CTOR hat eine Ausnahme ausgelöst. für jedes Glas, das eine neuere Version sein musste, wie Commons-Sammlungen oder log4j. Am unteren Rand der Stapelspur referenzierte es auf das störende Gefäß. 

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.

3
James Drinkard

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

1
Petr Jung

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"
1
schil227
  1. Extrahieren Sie das Esapi-Glas
  2. erstellen Sie unter org.owasp.esapi einen Ordner mit dem Namen Ressourcen
  3. ESAPI.properties in den org.owasp.esapi.resources kopieren
  4. Erstellen und Bereitstellen
0

extrahieren Sie die jar fügen Sie die Eigenschaftendatei im Ressourcenordner hinzu.

beim ersten Update der Eigenschaftendatei funktionierte es für mich

0
Shobhit Agarwal

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

0
Kevin Wall

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.

0
yoprogramo

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

0
Shankar P

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

0
Vasu J