Heim >Backend-Entwicklung >PHP-Tutorial >Ist es notwendig, SQL-Injection bei der Entwicklung mit dem TB-Framework zu verhindern? Wie kann man SQL-Injection verhindern? Bitten Sie Gott um Antworten
Ist es notwendig, SQL-Injection bei der Entwicklung mit dem TB-Framework zu verhindern? Wie kann man SQL-Injection verhindern? Bitten Sie Gott um Antworten
Ist es notwendig, SQL-Injection bei der Entwicklung mit dem TB-Framework zu verhindern? Wie kann man SQL-Injection verhindern? Bitten Sie Gott um Antworten
Eine einfache Möglichkeit:
Verwenden Sie PDO, um die Datenbank zu betreiben. Verwenden Sie in der auszuführenden SQL-Anweisung: Platzhalter oder? Platzhalter, anstatt Zeichenfolgen direkt zu verbinden, und verwenden Sie dann bindParam, um Parameter zu binden und den Parametertyp anzugeben .
Ein einfaches Beispiel
<code>$pdo = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);//先新建一个PDO $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//开启PDO的报错 $sql = 'SELECT * FROM article WHERE id > ? ;';//使用?占位符 try{ $stmt = $pdo->prepare(sql);//返回的statment的值赋给$stmt $stmt -> bindParam(要绑定的占位符的位置, 要绑定的变量 [, 数据类型]);//bindParam()是$stmt的方法而不是$pdo的方法 $stmt -> execute();//执行sql语句 } catch (PDOException $e) { echo 'Execute SQL failed: ' . $e->getMessage(); exit(); }</code>
Parametrierte Abfragen mit mysqli oder pdo
Ob Sie ein Framework oder etwas anderes sind, PDO hat nichts mit Injektion zu tun. Sie versuchen, dies durch Platzhalter und Vorverarbeitung zu verhindern. Tatsächlich kann keines davon einen 100-prozentigen Nutzen erzielen . % Effekt, es ist sicherer, die globale Filterung selbst zu schreiben und SQL-Schlüsselwörter herauszufiltern