Wie in einem anderen Posting erklärt ( http://donauweb.at/ebusiness-blog/2009/11/15/sicherheit-security-eines-webshops-verbessern/ ), gibt es bei PHP keine 100% Maßnahmen gegen SQL-Injection mit konventionellem Datenbankzugriff. Nur parametrisierte SQL-Befehle bieten mehr Sicherheit. Es ist daher empfehlenswert, nur noch PDO für Datenbankzugriffe zu verwenden.
Um Datenbankzugriffe mit PDO zu vereinfachen habe ich eine Bibliothek-Klasse geschrieben für den Zugriff auf eine Datenbank mittels PDO. Diese Klasse bietet Funktionalitäten wie bei ADODB. Die wichtigsten sind:
- pdoGetAll($sql, $data) und pdoGetRow($sql, $data) liefern ein oder mehrere Datensätze als Array zurück.
Der SQL-Befehl kann Parameter beinhalten, deren Werte in $data mitgeliefert werden.
zB $sql = „select * from table where id=:id“ - pdoGetAssoc($sql, $data) holt das gleiche Resultat wie pdoGetAll, jedoch wird die erste Spalte zum Index vom Array. Dadurch ist das Lesen von zB definierten ID-Werten nachher wesentlich einfacher.
- pdoInsUpd($table, $data, $insert_or_update, $where) erstellt einen INSERT oder UPDATE SQL-Befehl an Hand der übergebenen Parameter und führt diesen Befehl aus.