Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP:mysql gegen mysqli gegen pdo

Das Design der mysql_query Funktion ist so, dass Sie darauf achten müssen, jedes einzelne Datenbit, das Sie in sie einfügen, mit Escapezeichen zu versehen, und wenn Sie auch nur eines verpassen, kann Ihre gesamte Anwendung durch ein automatisches Tool zum Ausnutzen von SQL-Schwachstellen .

Sowohl mysqli und PDO-Unterstützungsplatzhalter, die erforderlich sind um sicherzustellen, dass Ihre Abfragen vor SQL-Injection-Bugs geschützt sind. Aufruf von mysql_real_escape_string auf alles ist nicht nur mühsam, sondern auch fehleranfällig, und genau da entstehen die Probleme.

Die mysql Funktionen sind ein Produkt der sehr frühen Tage von PHP und sind deutlich eingeschränkter als die neuen objektorientierten Funktionen, die sowohl von mysqli angeboten werden als Option oder per Design PDO.

Es gibt eine Reihe sehr guter Gründe, eine dieser beiden neuen Schnittstellen zu verwenden, aber der wichtigste ist, dass die mysql_query Funktion ist einfach zu gefährlich, um sie im Produktionscode zu verwenden. Damit sind Sie immer nur einen Fehler von einigen sehr ernsten Problemen entfernt.

Es gibt einen Grund, warum immer wieder zerrissene Datenbanken voller Passwörter und Kreditkartennummern auftauchen. Mit einem offensichtlichen SQL-Injektionspunkt ist es fast zu einfach, eine Website vollständig zu übernehmen.