2010-11-07 13 views
5

Ich habe eine einfache Kleinanzeigen-Website ...Sollte ich PDO verwenden, um meine Sql-Abfragen zu bereinigen oder ist "mysql_real_escape_string" genug?

Kleinanzeigen werden in MySql-Tabellen eingefügt und das einzige, was ich benutze, um Benutzereingaben zu bereinigen ist mysql_real_escape_string.

Ist das genug?

Das PDO ist der beste Weg, offcourse, aber was ist eigentlich der Unterschied zwischen nur mysql_real_escape_string und PDO verwenden, können in dieser Abfrage sagen:

SELECT * FROM table_name WHERE table_name.classified = '$classified'; 

ODER

INSERT INTO table_name (input1, input2) VALUES ('$input1', $input2); 

Dank

+1

Flucht ist zu leicht vergessen. Parametrisierte Abfragen sind eine inhärent sicherere * Methodik *. (Aber übrigens, Ihre Beispiele scheinen keinen Ansatz zu verwenden). Ein weiterer Vorteil von PDO sind mögliche Geschwindigkeitsgewinne. Es ist derzeit theoretisch, weil der PDO-MySQL-Treiber immer noch auf das Entkommen statt auf gebundene Parameter zurückgreift. – mario

+1

Wenn Sie die Datenbankabstraktion nicht wirklich benötigen, sollten Sie weder PDO noch MySql, sondern MySqli verwenden. Es unterstützt sowohl [binding] (http://de2.php.net/manual/en/mysqli-stmt.bind-param.php) und [escape] (http://de2.php.net/manual) /mysqli.real-escape-string.php) – Gordon

Antwort

2

Ich denke, mysql_real_escape_string ist genug für die Speicherung in der Datenbank und Abwehr gegen jede SQL-Injektion Angriff. Aber andere Validierung ist eine gute Idee, nur so, dass Ihr Dataset regulärer und weniger anfällig für Junk ist.

Für jede dieser Daten präsentiert, Filtern (ala Drupal Stil etc.) Es ist eine gute Idee zu.

Verwandte Themen