Heim >Backend-Entwicklung >PHP-Tutorial >Wie fügt man PHP-Variablen sicher in MySQL-Anweisungen ein, um SQL-Injection zu verhindern?
PHP-Variablen in MySQL-Anweisungen einfügen
Beim Einfügen von PHP-Variablen in MySQL-Anweisungen ist es wichtig, die Regeln zu verstehen, um die Datenintegrität sicherzustellen und zu verhindern potenzielle Sicherheitslücken.
1. Vorbereitete Anweisungen für Datenliterale verwenden
Was: Alle PHP-Variablen, die SQL-Datenliterale (Zeichenfolgen oder Zahlen) darstellen, müssen durch vorbereitete Anweisungen eingebunden werden.
Warum: Vorbereitete Anweisungen bereinigen und schützen Daten, indem sie SQL-Injection verhindern Angriffe.
Wie:
Beispiel mit mysqli:
$type = 'testing'; $reporter = "John"; $sql = "INSERT INTO contents (type, reporter, description) VALUES ('whatever', ?, ?)"; $stmt = $mysqli->prepare($sql); $stmt->bind_param("ss", $reporter, $description); $stmt->execute();
Wie man PDO verwendet:
$type = 'testing'; $reporter = "John"; $sql = "INSERT INTO contents (type, reporter, description) VALUES ('whatever', ?, ?)"; $stmt = $pdo->prepare($sql); $stmt->execute([$reporter, $description]);
2. Whitelist-Filterung für Abfrageteile
Was: Variablen, die andere Abfrageteile (Schlüsselwörter, Bezeichner) darstellen, müssen durch eine „Whitelist“ zulässiger Werte gefiltert werden.
Warum:Um zu verhindern, dass böswillige Benutzer nicht autorisierte Abfrageteile einschleusen oder Schlüsselwörter.
Wie:
Beispiel:
$orderby = $_GET['orderby'] ?: "name"; $allowed = ["name", "price", "qty"]; $key = array_search($orderby, $allowed, true); if ($key === false) { throw new InvalidArgumentException("Invalid field name"); } $query = "SELECT * FROM `table` ORDER BY `$orderby` $direction";
Das obige ist der detaillierte Inhalt vonWie fügt man PHP-Variablen sicher in MySQL-Anweisungen ein, um SQL-Injection zu verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!