Bei der Verwendung von PDO-vorbereiteten Anweisungen ist zu beachten, dass Platzhalter nur Datenliterale darstellen können. Das bedeutet, dass der Versuch, einen Bezeichner (Tabellen- oder Feldname) oder ein Syntaxschlüsselwort mit bindParam() oder bindValue() zu binden, zu unerwartetem Verhalten führt.
Bei der Arbeit mit dynamischen Bei Abfragen, die die dynamische Angabe eines Tabellen- oder Feldnamens erfordern, ist es wichtig, die Bezeichnerbindung sorgfältig zu handhaben. PDO bietet keine direkte Unterstützung für Bindungsbezeichner. Daher müssen Entwickler Bezeichner manuell formatieren und validieren, um die Sicherheit zu gewährleisten und Injektionsangriffe zu verhindern.
Um Bezeichner sicher zu formatieren, befolgen Sie diese Regeln:
Überprüfen Sie nach der Formatierung die Identifikator gegen eine hartcodierte Whitelist zulässiger Werte, um Missbrauch zu verhindern.
Ebenso werden verbindliche Syntaxschlüsselwörter wie „ORDER BY“ oder „DESC“ von PDO nicht unterstützt. Entwickler müssen Schlüsselwörter manuell validieren und auf die Whitelist setzen, um zu verhindern, dass böswillige Eingaben das Verhalten der Abfrage ändern.
Der folgende Code veranschaulicht, wie mit dynamischen Bezeichnern und Schlüsselwörtern mithilfe von Zeichenfolgenformatierung und Whitelisting umgegangen wird:
$field = "`" . str_replace("`", "``", $_GET['field']) . "`"; $dir = $_GET['dir'] == 'DESC' ? 'DESC' : 'ASC'; $sql = "SELECT $field FROM t ORDER BY field $dir";
In diesem Beispiel wird der dynamische Feldname in Backticks eingeschlossen und nach Bedarf mit Escapezeichen versehen. Die Sortierrichtung wird anhand einer Whitelist validiert, um zu verhindern, dass böswillige Eingaben die Abfrage verändern.
Durch sorgfältige Befolgung dieser Richtlinien können Entwickler PDO-vorbereitete Anweisungen mit dynamischen Bezeichnern und Schlüsselwörtern verwenden und gleichzeitig die Sicherheit wahren und Injektionsangriffe verhindern.
Das obige ist der detaillierte Inhalt vonWie kann ich PDO-vorbereitete Anweisungen mit dynamischen Bezeichnern und Schlüsselwörtern sicher verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!