/ / Sollte HTML bei der Eingabe desinfiziert werden? - Python, HTML, Django, HTML-Bereinigung, Eingabe-Bereinigung

Sollte HTML bei der Eingabe bereinigt werden? - Python, HTML, Django, HTML-Bereinigung, Eingabe-Bereinigung

Diese Frage wurde hier schon ziemlich gestelltein paar Mal, und die meisten sind sich einig, dass rohe HTML-Eingaben in der Datenbank gespeichert und bei der Ausgabe mit Escapezeichen versehen werden sollten. Ich denke jedoch, dass mein Fall etwas anders sein kann.

Der Benutzer kann einige Tags eingeben (em, strong, span usw.), andere werden jedoch entfernt (Skript, Stil, Meta usw.). Was ich also tue, ist das rohe HTML zu nehmen und durchzusenden bleach.clean um alle unsicheren Tags zu entfernen (nicht zu entgehen). Für mich fühlt sich dies viel mehr nach Validierung / Desinfektion an, als dass Inhalte für die Anzeige ausgeblendet werden. Zumal in welchem ​​Format ich die Daten ausliefe (HTML, JSON oder ein anderes Format), würde ich die unsicheren Tags entfernen.

Soll ich es noch mit der Ausgabe desinfizieren, oder ist es ein Fall, in dem es besser ist, es mit der Eingabe zu tun?

Bonus-Frage:

Wenn dies der richtige Ansatz für dieses Szenario ist, was ist der beste Weg, es in Django zu implementieren? Validierung auf Formularebene oder Validierung auf Modellebene?

Antworten:

0 für die Antwort № 1

Wenn es um Desinfektion geht, gibt es keine solchewas als zu viel. Sie sollten immer ALLE Benutzereingaben vor dem Einfügen in die Datenbank bereinigen, um sowohl den HTML-Code selbst zu bereinigen als auch vor SQL-Injection-Angriffen zu schützen. Es schadet nicht, eine zusätzliche Prüfung durchzuführen und die Ausgabe zu bereinigen, wenn sie von der Datenbank ausgeht und in die Webseite eingefügt wird.