Les citations magiques sont une question courante pour PHPer. J'ai accidentellement vu un article aujourd'hui, combiné avec le manuel PHP et ses réponses, je vais en faire un simple résumé ici.
En bref, les guillemets Magic échapperont automatiquement aux données saisies lorsqu'ils sont activés. Parmi eux, tous les guillemets simples ('), les guillemets doubles ("), les barres obliques inverses et les caractères NULL seront échappés (une barre oblique inverse est ajoutée). En fait, cette opération appelle essentiellement la fonction addlashes.
Pourquoi utiliser les guillemets magiques
Pratique et rapide
Les concepteurs de PHP ont imaginé dès le début une programmation rapide et pratique. Par exemple, lors de l'insertion dans une base de données, les guillemets Magic échapperont automatiquement aux données, ce qui est très pratique.
Bon pour les débutants
Les citations magiques peuvent, dans une certaine mesure, aider les débutants à éviter les risques de sécurité des scripts. Par exemple, dans du code sans aucune mesure de protection, activer les guillemets Magic réduira de nombreux risques, comme les problèmes d'injection. Bien entendu, l’utilisation de cette méthode à elle seule ne peut pas empêcher complètement de tels problèmes de sécurité.
"Je n'ai pas la permission de le fermer"
Évidemment, vous êtes peut-être conscient de ce problème, mais l’espace hôte n’est pas entièrement sous votre contrôle.
Pourquoi ne pas utiliser les citations magiques
Portabilité Que cette fonctionnalité soit activée ou non, elle affectera la portabilité du script car elle affecte nos opérations ultérieures de filtrage des données.
Problèmes de performances Toutes les données externes seront échappées avant d'être récupérées, ce qui augmentera sans aucun doute les coûts d'exécution (et il n'est pas nécessaire que toutes les données soient échappées).
Causer de la confusion Comme mentionné ci-dessus, il n'est pas nécessaire que toutes les données soient échappées. Une situation qui peut survenir est lorsque vous utilisez la fonction stripslashes "folle" afin d'obtenir des données non échappées.
PHP6 n'est plus supporté
Les concepteurs de PHP ont apparemment réalisé leur "erreur", ils l'ont donc déprécié dans PHP6.
Comment désactiver les citations magiques
Selon mon avis, il est plus fiable d'utiliser le fichier de configuration php.ini pour désactiver globalement les guillemets Magic. Reportez-vous au code ci-dessous
; Citations magiques pour les données GET/POST/Cookie entrantes.magic_quotes_gpc = Off; Citations magiques pour les données générées par l'exécution, par exemple les données provenant de SQL, de exec(), etc.magic_quotes_runtime = Off; Citations magiques de style Sybase (échappement ' avec '' au lieu de ').magic_quotes_sybase = Off Cependant, l'hébergeur en ligne peut ne pas vous autoriser à modifier le fichier php.ini, vous pouvez donc utiliser le fichier .htaccess pour le désactiver et ajouter le code suivant
php_flag magic_quotes_gpc Off Ce qui précède peut Pour le code porté, les données doivent rester cohérentes, que magic_quotes soit désactivé ou non. Alors le code suivant peut vous aider
<?phpif (get_magic_quotes_gpc()) {function stripslashes_deep($value) {$value = is_array($value) ?array_map('stripslashes_deep', $value) :stripslashes($value);return $ valeur;}$_GET = array_map('stripslashes_deep', $_GET);$_POST = array_map('stripslashes_deep', $_POST);$_COOKIE = array_map('stripslashes_deep', $_COOKIE);$_REQUEST = array_map('stripslashes_deep' , $_REQUEST);}