Ich habe ein Mitglied Seitensystem aktualisiert und eine der Anforderungen ist es, fett, unterstrichen, kursiv, Schriftfarbe und Links auf bestimmte Felder , aber nicht Schriftgröße oder Stil - all dies mit einem WYSIWYG-Editor. Dies wurde ursprünglich mit einem Textarea und einigen minimalen HTML-Filtern gemacht, dh Entfernen von <script>
mit einem preg_replace()
. Verrückt und definitiv unsicher, ich weiß.Benutzern erlauben, BBCode oder HTML mit WYSIWYG zu posten?
Meine erste Überarbeitung war, TinyMCE zu verwenden und bestimmte Tags innerhalb TinyMCE zu verbieten, das einzige Problem ist, dass ich nicht auf TinyMCE als irgendeine Art von Validator verlassen kann und sichern HTML-Eingabe gegen XSS, die ich entdeckt habe, ist ein absolutes Minenfeld. Ich habe die letzte Stunde oder so auf bestimmte Praktiken zu lesen, und es scheint fast unmöglich, bestimmte HTML-Tags/Attribute zu erlauben, ohne die aktuellen Profile zu vermasseln und weitere Anpassungen wie die Schriftgröße zu erlauben und Sachen mit Inline-Stilen. Zum Beispiel muss ich Schriftfarben mit span-Tags erlauben, aber das style-Attribut erlaubt auch jedes CSS-Element.
Ich habe jetzt mit der Idee der Verwendung von BBCode mit einem WYSIWYG-Editor, da dies uns htmlspecialchars()
sicher auf die Ausgabe anwenden und dann vollständig Kontrolle über alle HTML mit einem BBCode-Parser für [b] erzeugt werden könnte gesprenkelt , [u], [i] und [color] Tags mit nl2br()
für Zeilenumbrüche.
Das einzige Problem ist, ich muss etwas codieren, um das aktuelle HTML-Setup in BBCode zu konvertieren.
Meine Hauptabfrage ist die oben genannten Schritte mit BBCode genug, um vor XSS-Angriffen zu schützen? Oder gibt es eine elegantere/offensichtlichere Methode der HTML-Sicherheit, die ich verwenden kann?
Dies ist relevant für meine Interessen, gibt es ein Beispiel dafür, wie man das macht? – Dunhamzzz