Dieser Ansatz ist nicht identisch mit StackExchange, aber ich fand die AntiXSS 4.x-Bibliothek auf eine einfache Weise, die Eingabe zu bereinigen, um "sicheren" HTML zu ermöglichen.
http://www.microsoft.com/en-us/download/details.aspx?id=28589 Sie können hier eine Version herunterladen, aber ich habe es für die nützliche DOCX-Datei verknüpft. Meine bevorzugte Methode ist die Verwendung des NuGet-Paketmanagers, um das neueste AntiXSS-Paket zu erhalten.
Sie können die Assembly HtmlSanitizationLibrary in der 4.x AntiXss-Bibliothek verwenden. Beachten Sie, dass sich GetSafeHtml() in der HtmlSanitizationLibrary unter Microsoft.Security.Application.Sanitizer befindet.
content = Sanitizer.GetSafeHtml(userInput);
Dies kann vor dem Speichern in der Datenbank erfolgen. Der Vorteil besteht darin, schädliche Inhalte sofort zu entfernen und sich bei der Ausgabe keine Gedanken darüber machen zu müssen. Der Nachteil besteht darin, dass keine vorhandenen Datenbankinhalte verarbeitet werden. Sie müssen dies jedes Mal anwenden, wenn Sie Datenbankaktualisierungen durchführen.
Der alternative Ansatz besteht darin, diese Methode bei jeder Ausgabe von Inhalten zu verwenden.
Ich würde gerne hören, was der bevorzugte Ansatz ist.
Ich finde, dass dies zu aggressiv ist, um den WYSIWYG-Eingang zu bereinigen. Links werden auf reduziert. –
Aber wenn Sie HTML-Tags zulassen, dann ist eine AntiXss-Codierung nicht das, was Sie wollen, oder?Das würde z. B. in < a &rt; umwandeln (dh es so codieren, dass es kein HTML-Tag mehr ist). – McGarnagle
Richtig - Ich möchte nicht AntiXss kodieren. Die AntiXss-Bibliothek enthält jedoch die Sanitization-Bibliothek. Es scheint jedoch, dass Version 4.2 "alles kaputt gemacht hat". Dieser Link auf StackOverflow verlinkt auf viele nützliche Dinge: http://stackoverflow.com/questions/3959136/antixss-htmlencode-vs-antixss-getsafehtmlfragment einschließlich dieser Problemumgehung, die eine weiße Liste verwendet (und Sie könnten es selbst anpassen) zu sanieren: http://eksith.wordpress.com/2012/02/13/antixss-4-2-breaks-everything/ –