Heim > Backend-Entwicklung > PHP-Problem > PHP-Anti-SQL-Injection-Prinzip

PHP-Anti-SQL-Injection-Prinzip

(*-*)浩
Freigeben: 2023-02-27 19:00:02
Original
2485 Leute haben es durchsucht

SQL-Injection: Durch das Einfügen von SQL-Befehlen in Web-Formularübermittlungen oder die Eingabe von Abfragezeichenfolgen für Domänennamen oder Seitenanfragen wird der Server letztendlich dazu verleitet, bösartige SQL-Befehle auszuführen.

PHP-Anti-SQL-Injection-Prinzip

Vorbereitete Anweisungen sind für die SQL-Injection sehr nützlich, da nach dem Senden von Parameterwerten unterschiedliche Protokolle verwendet werden, um die Legitimität der Daten sicherzustellen. Bei der Vorverarbeitung handelt es sich um eine kompilierte Vorlage des SQL, das Sie ausführen möchten, das mithilfe variabler Parameter angepasst werden kann. (Empfohlenes Lernen: PHP-Video-Tutorial)

Verteidigungsmethode eins

mysql_real_escape_string – Escape der Zeichenfolge, die in den Sonderzeichen der SQL-Anweisung verwendet wird , unter Berücksichtigung des aktuellen Zeichensatzes der Verbindung !

$sql = "select count(*) as ctr from users where username
='".mysql_real_escape_string($username)."' and
password='". mysql_real_escape_string($pw)."' limit 1";
Nach dem Login kopieren

Methode 2:

Magic_quotes_gpc öffnen, um SQL-Injection zu verhindern. Es gibt eine Einstellung in php.ini: magic_quotes_gpc =

Diese ist standardmäßig deaktiviert. Wenn sie aktiviert ist, werden vom Benutzer übermittelte Abfragen automatisch in SQL konvertiert, z. B. „ in „. usw., um zu verhindern, dass SQL-Injektionen den Unterschied machen.

Wenn magic_quotes_gpc=Off, verwenden Sie die Funktion addslashes().

Methode 3:

Benutzerdefinierte Funktion

function check_param($value=null) { 
 #select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile
$str = 'select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile';
if(!$value) {
        exit('没有参数!'); 
    }elseif(eregi($str, $value)) { 
        exit('参数非法!');
    } return true; 

} 
function str_check( $value ) {
   if(!get_magic_quotes_gpc()) { 
   // 进行过滤 
   $value = addslashes($value); 
   } 
   $value = str_replace("_", "\_", $value); 
  $value = str_replace("%", "\%", $value); 
   return $value; 

} 
function post_check($value) { 
        if(!get_magic_quotes_gpc()) {
    
  // 进行过滤  
            $value = addslashes($value);
        } 
        $value = str_replace("_", "\_", $value); 
        $value = str_replace("%", "\%", $value); 
        $value = nl2br($value); 
        $value = htmlspecialchars($value); 
        return $value; 
    }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonPHP-Anti-SQL-Injection-Prinzip. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage