Gibt es eine gute, aktiv gepflegte Python-Bibliothek zum Filtern bösartiger Eingaben wie XSS?Python-Bibliothek für XSS-Filterung?
Antwort
Die Strip-o-Gram Bibliothek sieht ganz nett aus. Ich habe es nicht richtig ausgecheckt, aber es sieht so aus, als ob es die Dinge gut macht (d. H. HTML-Tags, die Sie angeben, auf die weiße Liste setzen kann, sowie HTML, das etwas Unerfreuliches entlässt).
Hier ist das Beispiel für die Verwendung Schnipsel, von dieser Seite zitiert:
from stripogram import html2text, html2safehtml
mylumpofdodgyhtml # a lump of dodgy html ;-)
# Only allow <b>, <a>, <i>, <br>, and <p> tags
mylumpofcoolcleancollectedhtml = html2safehtml(mylumpofdodgyhtml,valid_tags=("b", "a", "i", "br", "p"))
# Don't process <img> tags, just strip them out. Use an indent of 4 spaces
# and a page that's 80 characters wide.
mylumpoftext = html2text(mylumpofcoolcleancollectedhtml,ignore_tags=("img",),indent_width=4,page_width=80)
Hoffnung, das hilft.
Sie können nicht einfach darauf vertrauen, dass Angreifer schöne Tags setzen. Wenn strip-o-gram nicht an stark codierten Tags arbeitet (siehe rsnakes Liste: http://ha.ckers.org/xss.html), wird dies nicht funktionieren. – Mystic
Dito, was Mystic gesagt hat. Scheint wie Strip-o-gram (Junge klingt das, als ob du einen einsamen Freund aufheitern würdest) wird nicht als Verteidigung gegen XSS beschrieben. –
Sie können einfach XSS-Verteidigung in Python codieren, siehe zum Beispiel http://code.activestate.com/recipes/496942/ für eine lehrreiche und brauchbare Stück Code.
Wenn Sie ein Web-Framework und eine Template-Engine wie Jinja2 verwenden, besteht die Möglichkeit, dass die Template-Engine oder das Framework dafür etwas eingebaut hat.
Es gibt etwas in das cgi-Modul, das Ihnen helfen kann:
cgi.escape('malicious code here')
finden Sie unter: http://docs.python.org/library/cgi.html#cgi.escape
Auch Jinja2 bietet Flucht:
from jinja2 import utils
str(utils.escape('malicious code here'))
Ab Python 3.4+ gibt es 'html.escape' in stdlib! –
- 1. Scala für() vs für {}
- 2. Verbindungszeichenfolge für Informix für .NET
- 3. Mindestanforderungen für Unity für Android?
- 4. Gruppe für Monat für Anwesenheitsliste
- 5. Modul für OneSignal für Appcelerator
- 6. Vorschlag für Vorlagenbuch für C++?
- 7. Alternative für BtsMSITask für BizTalk
- 8. Elmah für WCF für Ausnahmebehandlung
- 9. Beispiel für den Domain-Namen für mailgun be für nodejs?
- 10. Einstellung für Ländereinstellung für Java-Überschreibung für bestimmtes Gebietsschema
- 11. Implementieren von Bedingungsvariablen für CRITICAL_SECTIONs für WinThreads für XP
- 12. Alternative für ‚in‘ Operator für verschachtelte Listen
- 13. Validierung für TextBox für ein Benutzerformular
- 14. Jeder Ersatz für Bugsense für ACRA
- 15. "für" Schleife in einem anderen "für" Schleife
- 16. Empfehlung für Bildschirm-Video-Capture für Demos
- 17. istream für die Kommandozeileneingabe für C++/Poco
- 18. Zeitbedingung für Überprüfer für GCM Zweck
- 19. Swift: Verschlüsselte Eingabe für UITextField für Kartendetails
- 20. Relativer Pfad für Asset-Funktion für Laravel
- 21. Chrome für iOS: „Immer erlauben“ für Plätzchen
- 22. Spline-Interpolation für Werte für die Zeit
- 23. Beispiel für Akka EventBus für Java
- 24. Syntax für reguläre Ausdrücke für "Nichts anpassen"?
- 25. Admob Unterstützung für Kivy (Python für Android)
- 26. Sitzungsbehandlung für in WCF für ASP.net-Client
- 27. Pfad für die Installation Binärdateien für Kabale
- 28. Hilfe für EC2-api-Tools für Ubuntu
- 29. Ersatz für veralteten Facebook-Code für Android
- 30. Alternative für ssl_requirement Plugin für Rails 3?
Nun alles, was das tun HTML-Tags entfernt. Hatten Sie besondere Anforderungen an Dinge, die Sie behalten möchten? – SpliFF
Ich möchte nur darauf hinweisen, dass der obige Kommentar sehr naiv ist, wenn Sie das lesen, lesen Sie auch: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet als Start. – mkoistinen