SQL-Injection lässt sich in den meisten Fällen durch die Verwendung vorbereiteter Anweisungen leicht vermeiden.
XSS ist schwieriger, wenn Sie vorhaben, Benutzern das Posten von HTML-Markup zu ermöglichen. Sie müssen alle <script>
entfernen Tags, alle on*
Attribute von Tags, alle javascript:
URLs, und selbst dann ist wahrscheinlich nicht vollständig garantiert, dass die HTML-Eingabe sicher ist. Es gibt Bibliotheken wie HTMLPurifier
das kann helfen, aber solange Sie HTML zulassen, laufen Sie Gefahr, etwas Bösartiges durchzulassen.
Sie könnten stattdessen eine Bibliothek verwenden, die etwas wie Markdown oder Wikitext implementiert. Dies schränkt die Eingabemöglichkeiten der Benutzer stark ein, während sie den Inhalt dennoch bis zu einem gewissen Grad markieren können. Es ist nicht vollständig sicher (Leute können immer noch einfach Links zu bösartigen Websites posten und hoffen, dass Benutzer zu ihnen durchklicken, was einige naiv genug sein werden, um dies tatsächlich zu tun), und Sie werden nicht in der Lage sein, einen reichhaltigen Editor wie TinyMCE ohne eine Art zu verwenden des Plugins, aber es ist viel einfacher, Markdown zu bereinigen als HTML zu bereinigen.