2009-04-17 17 views
20

sterilisieren Wir verwenden Jsp, Servlets, Beans mit MySQL-Datenbank. Wir möchten die Zeichen, die von Benutzern in Formularfeldern eingegeben werden, nicht einschränken. Wie kann ich die Eingabe bereinigen und sicherstellen, dass die Ausgabe nicht für schädliche Aktivitäten geändert wird? Gibt es übrigens beim Senden der Ausgabe die Möglichkeit zu überprüfen, ob extra Code gesendet wurde. Angenommen, es gibt ein Sucheingabefeld - der Benutzer gibt etwas wie <script>alert("I am here")</script>. Gibt es einen Weg, ich könnte wissen, dass dies ein HTML-Tag ist. Wenn der Benutzer einen zusätzlichen Parameter an ein Verknüpfungsfeld anhängt, kann es wie eine Vorher-Nachher-Prüfung sein, dass ich für das Dokument tun könnte, um zu erkennen, dass es ein zusätzliches Verknüpfungsfeld gab.Wie am besten Eingabe in Java Webapp

+0

Bitte denken Sie daran, dass Sie Ihre Fragen so umbenennen wie "Wie saniert man am besten Eingaben in Java?" - Ihr Fragetitel hilft nicht bei der Suche nach ähnlichen Antworten in der Zukunft ... – razlebe

+10

Whoa, wenn Sie die Frage neu einreichen führt das Javascript in der Frage aus! Schlechter Stackoverflow, schlecht! –

+0

@robhruska: Schöne finden! – Adnan

Antwort

5

Sie sollten immer grundlegende HTML-Escaping von Daten aus Quellen wie Benutzereingaben oder der Datenbank, die ungültige Zeichen enthalten können. Das JSP-Tag <c:out> erledigt dies zum Beispiel. Wenn der Benutzer "<script> ..." in ein Feld eingibt und Sie es erneut drucken, wird es auf dem HTML als "&lt;script&gt; ..." gedruckt.

10

Sie sollten Benutzern wirklich erlauben, so wenig HTML und/oder Javascript wie möglich einzugeben. Eine gute Lösung zur Validierung und Desinfektion dieses Materials ist die Verwendung einer vorgefertigten Bibliothek wie OWASP AntiSamy.

Werfen Sie auch einen Blick auf OWASP Enterprise Security API für eine Sammlung von Sicherheitsmethoden, die ein Entwickler benötigt, um eine sichere Webanwendung zu erstellen.

5

Geben Sie jsoup ein gehen, um Ihnen dabei zu helfen. Was auch immer Sie tun, versuchen Sie nicht, dies mit Regex oder etwas zu hacken, denn dann haben Sie 2 Probleme. :-)

Mit jsoup, alles, was Sie brauchen, ist ein kurzer Code-Snippet:

String safe = Jsoup.clean(unsafe, Whitelist.basic()); 

Sie Tags hinzufügen und Attribute zu Whitelist ziemlich leicht, obwohl ich es nicht unterstützt Namespace-Tags gefunden.

Verwandte Themen