Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Anti-SQL-Injection-Methode

PHP-Anti-SQL-Injection-Methode

藏色散人
藏色散人Original
2020-11-02 09:10:5811961Durchsuche

So verhindern Sie die SQL-Injection in PHP: 1. Verwenden Sie die Methode mysql_real_escape_string, um Sonderzeichen in der in der SQL-Anweisung verwendeten Zeichenfolge zu maskieren. 2. Aktivieren Sie magic_quotes_gpc, um die SQL-Injection durch benutzerdefinierte Funktionen zu verhindern.

PHP-Anti-SQL-Injection-Methode

Empfohlen: „PHP-Video-Tutorial

So verhindern Sie SQL-Injection mit PHP+Mysql

In diesem Artikel wird die Methode zur Verhinderung von SQL-Injection mit PHP+Mysql vorgestellt:

Methode 1:

mysql_real_escape_string – Escape-Sonderzeichen in Zeichenfolgen, die in SQL-Anweisungen verwendet werden, 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";

Methode 2:

Öffnen Sie magic_quotes_gpc, um SQL-Injection zu verhindern. In php.ini gibt es eine Einstellung: magic_quotes_gpc = Off. Diese ist standardmäßig deaktiviert. Wenn sie aktiviert ist, wird die vom Benutzer übermittelte SQL-Abfrage automatisch konvertiert, z. B. in „usw.“. eine wichtige Rolle bei der Verhinderung von SQL-Injection.

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

Methode 3:

Benutzerdefinierte Funktion

/**
* 防止sql注入自定义方法一
* author: xiaochuan
* @param: mixed $value 参数值
*/ 
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; 
} 
   
  
  
  
  
  
  
/**
* 防止sql注入自定义方法二
* author: xiaochuan
* @param: mixed $value 参数值
*/
function str_check( $value ) { 
  
    if(!get_magic_quotes_gpc()) { 
  
        // 进行过滤 
        $value = addslashes($value); 
  
    } 
  
    $value = str_replace("_", "\_", $value); 
  
    $value = str_replace("%", "\%", $value); 
       
   return $value; 
} 
   
  
  
  
  
  
/**
* 防止sql注入自定义方法三
* author: xiaochuan
* @param: mixed $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; 
}

Oben finden Sie die Details, wie Sie die SQL-Injection in PHP+Mysql verhindern können

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

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