Ich baue eine einfache Web-basierte Forum-Anwendung. Ich möchte Benutzern erlauben, html in ihre Beiträge aufzunehmen, möchte aber Cross-Site-Scripting stoppen. Meine derzeitige Strategie ist es, keine "Skript" -Tags zuzulassen, sondern nur "style" - und "href" -Attribute auf jedem Tag zuzulassen und nicht zuzulassen, dass "href" -Werte mit "javascript:" beginnen. Gibt es etwas, das ich vermisse?Unsafe Html
AKTUALISIEREN: Ich löste dies mit einer "Whitelist" von HTML-Elementen. Wenn ungültige Elemente gefunden werden, entferne ich das Tag, lasse aber das innere HTML. Dies löst das Problem des Kopierens und Einfügens von Personen aus einem MS Word-Dokument. Ich schaute auch in , aber stieß auf einige Probleme damit, wie es Stilattribute auf Spannweiten behandelte (d. H. Sie entfernt). Wenn ich das schaffen kann, kann ich zu dieser Lösung wechseln.
Ich fing eigentlich mit einer weißen Liste an. Das Problem, mit dem ich konfrontiert wurde, betraf den Text, der aus MS Word kopiert und eingefügt wurde. Ich bin mir nicht sicher, ob ich alle Elemente vorhersehen kann, die ich in diesem Fall bekommen könnte. Der Text geht in einen WYSIWYG-Editor, so dass es für den Benutzer nicht klar ist, welcher HTML-Code tatsächlich an den Server gesendet wird. Außerdem sind die Benutzer nicht wirklich technisch versiert, so dass sie nicht wissen, wie sie das Problem beheben können, wenn das Einfügen aus Word ihnen eine Fehlermeldung gibt. – herbrandson
Einfügen von MS Word in WYSIWYG-Editoren ist ein Schmerz! Einige Editoren (FCKEditor und ich denke, TinyMCE - meine bevorzugte) können Sie die Strg + V und Einfügen-Funktionen des Browsers abfangen und zwingen den Benutzer, die MS Word-Inhalte als Nur-Text einfügen. Es wird nicht über Formatierung übertragen, aber es wird sauber sein! TinyMCE hat tatsächlich auch eine Funktion "Aus Word einfügen". –
Eine mögliche Lösung besteht darin, dass Ihre WYSIWYG-Steuerung auf der Clientseite eine Bereinigung durchführt. Auf diese Weise kann der Großteil des notorisch schlechten HTML-Codes behoben werden, und Sie können weiterhin eine Server-Whitelist für die Sicherheit verwenden. –