Heim > Artikel > Backend-Entwicklung > So verhindern Sie die SQL-Injection in PHP
Sie müssen SQL-Injection verhindern, wenn Sie die Datenbank abfragen
Die Implementierungsmethode:
PHP wird mitgeliefert seine eigene Methode SQL-Anweisungen können mit Escapezeichen versehen werden, und Backslashes werden vor bestimmten Zeichen hinzugefügt, wenn dies in Datenbankabfrageanweisungen erforderlich ist. Diese Zeichen sind einfache Anführungszeichen ('), doppelte Anführungszeichen ("), Backslash () und NUL (NULL-Zeichen). (Empfohlenes Lernen: PHP-Programmierung vom Eintrag bis zum Master)
string addslashes ( string $str )//该函数返回一个字符串
Beispiel
<?php $str = "Is your name O'reilly?"; // 输出: Is your name O\'reilly? echo addslashes($str); ?>
ThinkPHP bietet automatisch Sicherheitsschutz für Daten vom Typ String, führt ThinkPHP eine Escape_String-Verarbeitung durch (real_escape_string, mysql_escape_string)
Um SQL-Injection-Probleme wirksam zu verhindern, offizielle Empfehlungen:
Versuchen Sie, Arrays für Abfragebedingungen zu verwenden, was eine sicherere Methode ist.
Wenn Sie Zeichenfolgenabfragebedingungen verwenden müssen, verwenden Sie den Vorverarbeitungsmechanismus automatische Vervollständigungsmechanismen für anwendungsspezifische Filterung;
Wenn die Umgebung es zulässt, versuchen Sie, PDO zu verwenden und eine Parameterbindung
Abfrage zu verwenden Diese Methode ähnelt dem Einfügen eines Platzhalters in die Abfrageanweisung und der anschließenden Übergabe der Parameter in Form eines ArraysZum Beispiel:
$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select(); $Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();
Das obige ist der detaillierte Inhalt vonSo verhindern Sie die SQL-Injection in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!