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
Antwort
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 "<script> ..."
gedruckt.
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.
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.
- 1. Java HashMap finden am besten passenden Schlüssel
- 2. Wie man am besten zum Speichern von Spielkonfigurationsvariablen in Java
- 3. Abschluss Eingabe am Ende der Eingabe in Java
- 4. Wie am besten einzurichten core.clj
- 5. Wie finde ich am besten in r?
- 6. Wie geht das am besten in Android?
- 7. Wie kann der Sandbox-Java-Code am besten ausgeführt werden?
- 8. Java: wie in Ordner in Webapp schreiben?
- 9. Wie können Sommerzeitregeln am besten dargestellt werden?
- 10. Wie kommuniziert man Architekturdesign am besten?
- 11. Wie liest man GetResponseStream() am besten?
- 12. Wie organisiere ich meine Datenbank am besten?
- 13. Wie kann die Clientsitzung am besten ablaufen?
- 14. Wie sichert man am besten eine Datenbankverbindungszeichenfolge?
- 15. Wie verwende ich am besten GPS-Daten?
- 16. Wie man ein Tupelargument am besten weitergibt?
- 17. Wie man am besten alte Commits zerquetscht
- 18. Wie organisieren Sie am besten mehrere Teilansichten?
- 19. Welches Java-Framework funktioniert am besten mit Google Web Toolkit?
- 20. Welches Java Web Framework passt am besten zu Google Guice?
- 21. jQuery.ajax() - Wie man Timeouts am besten behandelt?
- 22. Wie stelle ich MACOSX_DEPLOYMENT_TARGET am besten ein?
- 23. GMM passt am besten Modell
- 24. Welche Java-Sammlung eignet sich am besten für dieses Szenario
- 25. Welches Audioformat wäre am besten?
- 26. Am besten vergleichen 2 URLs
- 27. Wie man am besten Listenelemente in einer Schleife in C#
- 28. wie Dateneingabe speichern besten Java-
- 29. Wie erstellt man am besten eine Kopie einer Blobstore-Entität in der App-Engine in Java?
- 30. Wie können Benutzersteuerelemente in ASP.NET MVC am besten implementiert werden?
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
Whoa, wenn Sie die Frage neu einreichen führt das Javascript in der Frage aus! Schlechter Stackoverflow, schlecht! –
@robhruska: Schöne finden! – Adnan