2017-12-21 5 views
0

Ich habe eine Frage in Bezug auf owasp ESAPI-Schnittstelle für XSS-Schutz. Um es einfach kurz und direkt zu halten, mache ich eine Quellcode-Überprüfung mit Fortify. Die Anwendung implementiert ESAPI und Aufruf an ESAPI.encoder(). Canonicalize (Benutzereingabe) und führt keine weitere Überprüfung durch und druckt die Ausgabe. Ist dies immer noch anfällig für XSS PS: Der Reflexionspunkt ist in einem HTML-Element. Ich habe durch alle Beiträge über ESAPI Schnittstelle in Stack-Überlauf gegangen, konnte aber nicht ganz bekommen es Jede HilfeJava ESAPI IMPLEMENTATION

+0

Lassen Sie mich wissen, wenn weitere Informationen dazu erforderlich sind. Sorry, wenn meine Art, die Frage zu stellen, merkwürdig ist. Vielen Dank im Voraus – itzkmv

+0

Lassen Sie mich wissen, wenn weitere Informationen hierzu erforderlich sind. Sorry, wenn meine Art, die Frage zu stellen, merkwürdig ist. Vielen Dank im Voraus – itzkmv

Antwort

1

canonicalize allein geschätzt würde gar nicht daran hindert, xss. Es dekodiert Daten, aber Sie wollen das Gegenteil, um die Daten zu kodieren.

Nicht nur erlaubt es Inhalt wie <script>alert(1)</script> Straight-Through, aber es dekodiert auch &lt;script&gt;alert(1)&lt;/script&gt; von einem nicht ausführbaren Skript zu einem ausführbaren Skript.

Die gewünschte Methode ist encodeForHTML. Dadurch werden die Daten codiert, sodass sie sicher in einen HTML-Kontext eingefügt werden können. Daher wird < zu &lt; und so weiter.

Überprüfen Sie auch, ob Sie bereits HTML-Codierung durchführen, indem Sie prüfen, ob diese Zeichen akzeptiert werden. Einige Templating-Sprachen und -Tags kodieren automatisch.

+0

Haben Sie einen kleinen Zweifel hier. Hier rufen wir auch den Encoder mit ESAPI.encodr(). canonicalize(). Codiert also der Encoder nicht die decodierte Ausgabe aus der canonicalize-Methode – itzkmv

+0

@itzkmv Der Encoder wird nur codieren, wenn Sie eine der Codierungsmethoden darauf aufrufen. Einige der Methoden machen stattdessen die Decodierung. – fgb

+0

Haben Sie Zweifel, nicht die encodevmethod in ESAPI.encoder(). canonicalize() kodiere die dekodierte Ausgabe mit der canonicalize-Methode – itzkmv