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?

Wie schreibe ich bei einer Injektion in eine PHP-Webanwendung die Benutzeranmeldung, um zu verhindern, dass die Anmeldung durch Injektion umgangen wird?

WBOY
WBOYOriginal
2016-08-04 09:19:351051Durchsuche

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

Antwortinhalt:

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn