Einschränkungen der PHP-PDO-Anweisungsparameter: Tabellen- und Spaltennamen
Vorbereitete Anweisungen in PHP-Datenobjekten (PDO) bieten erhöhte Sicherheit, indem sie SQL-Injection verhindern Angriffe. Es ist jedoch nicht möglich, Tabellen- oder Spaltennamen dynamisch als Parameter an vorbereitete Anweisungen zu übergeben.
Warum es Einschränkungen gibt
Die vorbereiteten Anweisungen von PDO sollen sicherstellen, dass alle Benutzer Die Eingabe wird validiert, bevor sie als SQL-Abfrage ausgeführt wird. Das Zulassen, dass Tabellen- oder Spaltennamen Parameter sind, würde eine Sicherheitslücke schaffen, da böswillige Benutzer möglicherweise die Abfrage manipulieren und sich unbefugten Zugriff auf sensible Daten verschaffen könnten.
Alternative Lösung
Zu Um einen Tabellennamen sicher in eine SQL-Abfrage einzufügen, sollten Sie die Daten manuell filtern und bereinigen. Ein Ansatz besteht darin, eine switch()-Anweisung zu verwenden, um eine Whitelist zulässiger Tabellennamen zu erstellen:
function buildQuery($get_var) { switch ($get_var) { case 1: $tbl = 'users'; break; default: throw new Exception('Invalid table name'); } $sql = "SELECT * FROM $tbl"; }
Mit dieser Methode können Sie sicherstellen, dass nur Benutzereingaben verwendet werden können, die den erwarteten Werten entsprechen Abfrage. Dieser Ansatz verhindert potenzielle Sicherheitslücken und behält gleichzeitig die Vorteile vorbereiteter Anweisungen bei.
Das obige ist der detaillierte Inhalt vonKönnen mit PHP PDO vorbereitete Anweisungen dynamische Tabellen- und Spaltennamen als Parameter verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!