Heim > Artikel > Backend-Entwicklung > Wie schreibe ich bei einer Injektion in eine PHP-Webanwendung die Benutzeranmeldung, um zu verhindern, dass die Anmeldung durch Injektion umgangen wird?
Wenn es eine Injektion in einer PHP-Webanwendung gibt, wie schreibe ich die Benutzeranmeldung, um zu verhindern, dass die Anmeldung durch Injektion umgangen wird?
Vorausgesetzt, die Bedingungen können nicht geändert werden, antworten Sie nicht, um eine Injektion zu verhindern
Allgemeines 2-Wege-Schreiben
·
1
$sql = "select * from user where user_name=$username and password=$password";
$res = $db_obj-> get_one($sql);
if($res){
//Anmeldung erfolgreich
}
·
·
2
$sql = "select * from user where user_name=$username";
$res = $db_obj->get_one($sql);
if($res[password]==md5($password)){
//Anmeldung erfolgreich
}
·
Beide der oben genannten 2 können umgangen werden, bitte schreiben Sie auf sichere Weise
Wenn es eine Injektion in einer PHP-Webanwendung gibt, wie schreibe ich die Benutzeranmeldung, um zu verhindern, dass die Anmeldung durch Injektion umgangen wird?
Vorausgesetzt, die Bedingungen können nicht geändert werden, antworten Sie nicht, um eine Injektion zu verhindern
Allgemeines 2-Wege-Schreiben
·
1
$sql = "select * from user where user_name=$username and password=$password";
$res = $db_obj-> get_one($sql);
if($res){
//Anmeldung erfolgreich
}
·
·
2
$sql = "select * from user where user_name=$username";
$res = $db_obj->get_one($sql);
if($res[password]==md5($password)){
//Anmeldung erfolgreich
}
·
Beide der oben genannten 2 können umgangen werden, bitte schreiben Sie auf sichere Weise
Da eine Injektionsschwachstelle vorliegt, kann nicht nur die Anmeldung umgangen werden, sondern auch Ihre Datenbank ist unsicher. Wenn Sie Ihre Tabellenstruktur kennen, ist das Einfügen eines Administratorkontos auch sehr einfach. Der Schlüssel liegt also darin, eine Injektion zu verhindern, und nicht darin, was nach der Injektion zu tun ist.
Das einfachste
$sql = "select * from user where user_name='".addslashes($username)."'";
Verwendet die allgemeine Schreibweise nicht orm zum Lesen und Schreiben der Datenbank?
Handgeschriebenes SQL ist von Natur aus unsicher
Verwenden Sie vorbereitete PDO-Anweisungen