Ich habe kürzlich etwas über SQL-Injection gelernt und festgestellt, dass die Anmeldefunktion vieler Leute gleichzeitig den vom Benutzer eingegebenen Benutzernamen und das Kennwort verwendet, kombiniert in einer SQL-Anweisung, und die Abfrage ermittelt, ob ein Ergebnis zu ermitteln ist ob die Anmeldung durchgeführt werden kann. Zum Beispiel:
<?php $username = $_POST['username']; $password = $_POST['password']; $sql = "select * from user where username='{$username}' and password='{$password}' "; $this->db->query($sql);
Es ist einfach, „“ oder „1=1 – Injektion““ in den Parameter „Benutzername“ einzufügen. Obwohl dies nur ein Beispiel ist, werden heutzutage viele Frameworks verwendet. Wenn Sie nicht aufpassen, wird die endgültige kombinierte Anweisung dieser ähneln. Lassen Sie uns nicht über Eingabeparameterfilterung, Parameterbindung, Syntaxanalyse und andere gängige Methoden zum Umgang mit SQL-Injection sprechen. Wir können die Beurteilungsmethode ändern:
<?php $username = $_POST['username']; $password = $_POST['password']; $sql = "select * from user where username='{$username}' "; $data = $this->db->query($sql); ...... if($data['password'] == $password){ //密码OK }else{ //密码错误 }
Auf diese Weise werden zuerst die Daten gefunden und dann wird PHP selbst verwendet, um festzustellen, ob das Passwort übereinstimmt. Wird das Problem dadurch gelöst?
Verwandte Empfehlungen:
Empfohlene 10 Methoden zur Verhinderung von SQL-Injection
Das obige ist der detaillierte Inhalt vonPHP- und MySQL-Anmeldefunktionen verhindern SQL-Injection. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!