5 Stimmen

Handhabung von Rich Text in einer MVC-Anwendung

Was sind die besten Praktiken für die Arbeit mit Rich Text in einer Webanwendung? Ich möchte mich nicht für Skript-Angriffe angreifbar machen. Sollten die Daten kodiert werden, wenn sie in die Datenbank eingegeben werden, und dann dekodiert werden, wenn sie dem Benutzer wieder angezeigt werden? Gibt es Empfehlungen für Rich-Text-Editoren, die Dinge wie das Entfernen von Skript-Tags oder die Kodierung des eingegebenen Markup behandeln?

2voto

SLaks Punkte 832502

Sie sollten eine Whitelist bekannter Tags und Attribute erstellen, die Benutzereingaben als XML parsen und alle Tags und Attribute entfernen, die nicht in der Whitelist enthalten sind.

EDIT : Beachten Sie, dass Sie, wenn Sie Hyperlinks oder Bilder zulassen, die src et href Tags. Ich würde empfehlen, das Parsing mit System.Uri und beschränken die Regelung auf http und vielleicht die Domäne zu Ihrer Website (je nachdem, was Sie Ihren Nutzern ermöglichen wollen).

Ähnliche Dinge wurden schon früher getan; googeln Sie danach.

EDIT : Zum Beispiel, siehe diese Frage


2 und EDIT :

Sie sollten die Daten nicht kodieren, bevor Sie sie in die Datenbank eingeben. Solange Sie Parameter verwenden (und wenn Sie das nicht tun, sollten Sie wirklich sollte), wird die Datenbank von allem, was Sie in sie eingeben, völlig unberührt bleiben.

Wenn Ihre Eingabesanitisierung sicher ist (siehe oben), macht es keinen Unterschied, ob Sie sie kodieren und unterwegs dekodieren, und wenn die Sanitisierung nicht sicher ist, hilft die Kodierung nicht.

Es ist jedoch wahrscheinlich eine gute Idee, es durch einen Standard-XML-Parser laufen zu lassen, alle Eingaben zurückzuweisen, die nicht geparst werden können, und das formatierte XML vom Parser zu verwenden (wie ich oben erwähnt habe)


3 rd EDIT :

Es gibt viele Rich-Text-Editoren; für MVC würde ich empfehlen FCKEditor . Es wird Ihnen die Eingabe entgehen, aber Sie muss nicht ausschließlich darauf verlassen, da ein Angreifer JavaScript deaktivieren oder seine eigene HTTP-Anfrage fälschen kann. (Sie müssen das HTML auf dem Server immer noch validieren). Es gibt viele Rich-Editoren für Webformulare (die, wie ich annehme, eine serverseitige Validierung durchführen); für MVC gibt es (noch) keine.

0voto

Tadeusz Wójcik Punkte 6167

Die beste Option ist, Daten zu verschlüsseln, die an den Benutzer gesendet werden und nicht in der Datenbank verschlüsseln.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X