Maison > développement back-end > Problème PHP > Principe d'injection PHP anti-sql

Principe d'injection PHP anti-sql

(*-*)浩
Libérer: 2023-02-27 19:00:02
original
2515 Les gens l'ont consulté

Injection SQL : en insérant des commandes SQL dans les soumissions de formulaires Web ou en saisissant des chaînes de requête pour les noms de domaine ou les demandes de pages, cela trompe finalement le serveur et l'oblige à exécuter des commandes SQL malveillantes.

Principe d'injection PHP anti-sql

Les instructions préparées sont très utiles pour l'injection SQL, car différents protocoles sont utilisés après l'envoi des valeurs des paramètres, garantissant la légitimité des données. Le prétraitement est considéré comme un modèle compilé du SQL que vous souhaitez exécuter, qui peut être personnalisé à l'aide de paramètres variables. (Apprentissage recommandé : Tutoriel vidéo PHP)

Méthode de défense 1

mysql_real_escape_string – échappe la chaîne utilisée dans les caractères spéciaux de l'instruction SQL , en tenant compte du jeu de caractères actuel de la connexion  !

$sql = "select count(*) as ctr from users where username
='".mysql_real_escape_string($username)."' and
password='". mysql_real_escape_string($pw)."' limit 1";
Copier après la connexion

Méthode 2 :

Ouvrez magic_quotes_gpc pour empêcher l'injection SQL. Il y a un paramètre dans php.ini : magic_quotes_gpc =

Off. Ceci est désactivé par défaut. S'il est activé, il convertira automatiquement les requêtes soumises par l'utilisateur en SQL, comme la conversion de ' en ', etc., pour empêcher les injections SQL de faire toute la différence.

Si magic_quotes_gpc=Off, utilisez la fonction addlashes().

Méthode 3 :

Fonction personnalisée

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; 
    }
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal