Wenn Sie andere Möglichkeiten finden können, Benutzer Inhalte zu posten, die nicht HTML beinhalten, tun Sie das. Es gibt viele benutzerfreundliche Markup-Systeme, mit denen Sie HTML generieren können.
So denke ich einige regex machen aller Script-Tags und alle JavaScript-Attribute wie onload loszuwerden, Onclick usw.
es
Vergessen. Sie können HTML mit Regex auf keine nützliche Weise verarbeiten. Ganz zu schweigen davon, wenn Sicherheit involviert ist und Angreifer absichtlich gefälschte Markups auf Sie werfen.
Wenn Sie Ihre Benutzer davon überzeugen können, XHTML einzugeben, ist das viel einfacher zu analysieren. Sie können es immer noch nicht mit Regex machen, aber Sie können es in einen einfachen XML-Parser werfen und über die resultierende Knotenstruktur gehen, um zu überprüfen, dass jedes Element und Attribut bekanntermaßen sicher ist, und alle löschen, die nicht vorhanden sind -serialisieren.
HTML-Filter bearbeitet die HTLM und es ist wichtig, dass der HTML-Code so gepflegt wird, wie er gepostet wurde.
Warum?
Wenn es so ist, können sie es in ihrer ursprünglichen Form bearbeiten, dann ist die Antwort einfach, es auf dem Weg zu reinigen, um im Browser angezeigt zu werden, nicht auf dem Weg zur Sendezeit.
Wenn Sie müssen Benutzer geben ihre eigenen HTML-freien Eingabe - und in der Regel würde ich davon abraten - dann HTML Purifier, mit einer Whitelist-Ansatz (verbieten alle Elemente/Attribute, die nicht bekannt sind - sicher) ist ungefähr so gut wie es geht. Es ist sehr, sehr kompliziert und Sie müssen es vielleicht auf dem neuesten Stand halten, wenn Hacks gefunden werden, aber es ist Straßen vor allem, was Sie sich mit Regexen hacken werden.
Aber ich möchte keine neue Domäne nur dafür kaufen.
Sie können eine Subdomäne verwenden, solange Authentifizierungs-Tokens (insbesondere Cookies) nicht zwischen Subdomänen wechseln können. (Bei Cookies können sie standardmäßig nicht als Domänenparameter auf den aktuellen Hostnamen festgelegt werden.)
Vertrauen Sie Ihren Benutzern mit Skriptfunktionen? Wenn nicht, lassen Sie sie nicht, oder Sie erhalten Angriffsskripte und Iframes auf russische Exploit-/Malware-Sites überall ...
Vielen Dank für das Stellen dieser Frage. Das Web wäre ein viel besserer (und sicherer!) Platz, wenn jeder, der eine Web-App erstellt hat, dies vor dem Start gefragt hat. –