2016-03-24 19 views
1

Ich versuche, OWASP ESAPI für die Validierung von Zeichenfolgen in einem Frühjahr MVC-Projekt zu verwenden.ESAPI mit Feder mvc

Bisher habe ich getan:

1-

<dependency> 
    <groupId>org.owasp.esapi</groupId> 
    <artifactId>esapi</artifactId> 
    <version>2.1.0.1</version> 
</dependency> 

2- Hinzugefügt ESAPI.properties und validation.properties in den Ressourcen wie: myproject/src/resources/esapi/ESAPI.properties myproject/src/resources/esapi/validation.properties

3- meine eigene Validierung der Hinzugefügt validation.properties

4- In meinem application.properties stelle ich die org.owasp.esapi.resources

org.owasp.esapi.resources=classpath:esapi/ESAPI.properties

Und ich habe die folgende Zeile in einem Verfahren

boolean isValid = ESAPI.validator().isValidInput("user id", userID, "USERID", 20, false); 

Die Validierung funktioniert, aber ich erhalte die folgenden Meldungen in stdout ausgedruckt:

System property [org.owasp.esapi.opsteam] is not set

System property [org.owasp.esapi.devteam] is not set

Wie behebe ich das?

Ich habe auch mehrere Zeilen wie:

Not found in 'org.owasp.esapi.resources' directory or file not readable: /usr/local/apache-tomcat-8.0.28/bin/ESAPI.properties

Not found in SystemResource Directory/resourceDirectory: .esapi/ESAPI.properties

SUCCESSFULLY LOADED ESAPI.properties via the CLASSPATH from 'esapi/' using current thread context class loader! und einige andere.

Wie werde ich diese Zeilen loswerden?

Ich habe auch einen Test geschrieben. Nach dem Ausführen des Tests habe ich die fast gleichen Kommentare wie in Produktionscode erhalten mit Ausnahme der SUCCESS Teil, zusätzlich erhalte ich folgendes:

Not found in 'org.owasp.esapi.resources' directory or file not readable: /Users/me/dev/myproject/validation.properties Found in SystemResource Directory/resourceDirectory: /Users/me/dev/myproject/target/classes/esapi/validation.properties Loaded 'validation.properties' properties file

So ist die Validierung und Tests aller Arbeit, aber ich erhalte alle diese Meldungen, die Ich möchte loswerden!

Was vermisse ich in den Konfigurationen oder anderswo?

Antwort

1

Dies sind Standardwarnungen, die während des Bootstrappings von org.owasp.esapi.reference.DefaultSecurityConfiguration beim ersten Laden auftreten. Da die ESAPI-Protokollierungsfunktion konfigurierbar ist und die DefaultSecurityConfiguration nach der ESAPI.properties sucht, die angibt, welche Protokollfunktion verwendet wird, kann die DefaultSecurityConfiguration die bevorzugte ESAPI-Protokollierungsfunktion nicht verwenden. (Wenn es raten könnte, aber was ist, wenn es falsch rät?) Stattdessen verwendet es stattdessen System.out.println(), um Nachrichten auf stdout zu drucken.

Schon früh experimentierten wir damit, diese Botschaften komplett zu eliminieren, aber dann begannen wir viele Beschwerden darüber zu bekommen, dass Menschen nicht in der Lage waren, herauszufinden, wo sie ihre ESAPI setzen sollten.Eigenschaftendatei oder wenn ESAPI eine andere verwendet, als sie eigentlich verwenden sollte. Obwohl diese Nachrichten nicht idiotensicher sind, waren sie besser als die Alternative, einen Debugger zu starten und ihn an Ihren Anwendungsserver anzuhängen, nur damit Sie herausfinden können, warum ESAPI Ihre ESAPI.properties-Datei nicht finden kann.

Die Quintessenz ist, dass Sie so ziemlich nichts auswählen können, mit dem jeder glücklich sein wird. Um in diesem speziellen Fall eine Catch-22-Situation mit der ESAPI-Protokollierungseinrichtung zu vermeiden, die noch nicht konfiguriert ist (das ist ein Teil dessen, was dies zu tun versucht), waren die einzigen logischen Alternativen Ausgabe an stdout, Ausgabe an stderr oder Ausgabe zu einer bestimmten Datei. Letzteres wurde schnell verworfen, da wir uns nicht für einen universellen Ort entscheiden konnten, an dem wir die Datei erstellen konnten, die auf allen Betriebssystemen portierbar war und für die wir garantiert Schreibrechte haben würden. Und es wurde argumentiert, dass stderr falsch lag, weil dies nicht wirklich Fehlermeldungen an sich waren. Und da andere Anwendungsserver oft Start-up-Nachrichten an stdout schreiben und die meisten Operationen die Umleitung bereits in eine Datei umleiten, von der sie wissen, dass sie sie erstellen können, schien stdout eine natürliche Wahl zu sein. Im Nachhinein ist der Algorithmus für die Lokalisierung Ihrer ESAPI.properties-Datei zwar übermäßig komplex, aber das liegt hauptsächlich an Rückwärtskompatibilitätsproblemen und bietet Ihnen eine extreme Flexibilität in Bezug auf die Auswahlmöglichkeiten.

Die Quintessenz ist, dass Sie diese nicht vollständig loswerden können. Sie können bestimmte Eigenschaften wie die erwähnten 2 oder org.owasp.esapi.resources setzen und einige von ihnen weggehen lassen.

Weitere Informationen finden Sie unter: https://static.javadoc.io/org.owasp.esapi/esapi/2.1.0.1/org/owasp/esapi/reference/DefaultSecurityConfiguration.html und https://github.com/ESAPI/esapi-java-legacy/tree/master/documentation/ESAPI-configuration-user-guide.md für eine Diskussion dieser Eigenschaften und was sie bedeuten/tun.

-Kevin