2010-12-05 11 views
0

Ich experimentiere mit der Erstellung eines Kommentarsystems. Ich verwende php-OEmbed Klasse und HTML Purifier. Mit welchem ​​Filter kann ich sicherstellen, dass die Kommentare sicher in meine Datenbank eingefügt werden können? Ich weiß, dass Sie PHP-Filter wie FILTER_SANITIZE_STRING verwenden können, aber werden diese nicht das HTML in Einheiten verwandeln?Sicherstellen der Kommentarsicherheit

Auch wenn Sie etwas wie die WMD editor verwenden, müssen Sie dann etwas auf der Client-Seite (wie PHP Markdown) auch verwenden, um sicherzustellen, dass es sicher ist?

Antwort

2

Grundsätzlich müssen Sie Benutzereingaben sanieren, wenn Sie es irgendwo senden.

Wenn Sie es in Ihre Datenbank setzen müssen Sie SQL-Injection verhindern, indem sie unter Angabe SQL Sonderzeichen (vorbereitete Anweisungen wird dies für Sie tun). Wenn Sie es an einen Browser senden, müssen Sie HTML-Sonderzeichen umgehen (PHP verfügt über Funktionen, um dies zu verhindern), um eine Skriptinjektion zu verhindern.

Es können auch andere Orte, an denen Sie Sonderzeichen entkommen müssen, auch. Zum Beispiel, wenn Sie die Kommentare an ein Bash-Skript auf dem Server senden, um irgendeine Art von Verarbeitung durchzuführen. In diesem Fall müssten Sie Bash-spezifische Sonderzeichen zitieren oder entziehen.

Es ist wichtig, nicht Zitat/Flucht an der falschen Stufe: zum Beispiel, keine HTML-Entitäten entkommen, wenn Sie es in die Datenbank gestellt, wenn Sie absolut sicher sind, was Sie tun. Es ist sehr einfach, versehentlich Dinge wieder zu entkommen, wenn Sie es aus der Datenbank ziehen und darauf vorbereiten, es an einen Browser zu senden, oder wenn Sie eine Fehlermeldung senden, wenn die Datenbankverbindung fehlschlägt (dies könnte eine XSS-Sicherheitslücke verursachen)). Entfliehen Sie im letzten Moment und Sie werden diese Fallstricke wahrscheinlich vermeiden.

1

Sie benötigen keine Filter für SQL-Injection zu verwenden. Eine bevorzugte Lösung ist die Verwendung von prepared statements. Zum Beispiel stellt PDO PDOStatement zur Verfügung.

+0

ich vergessen zu schreiben, ich bin mit redbean, die auf PDO gebaut wird. – jonnnnnnnnnie