Est-ce que l'aide magic_quotes () affectent l'utilisation de mysql_real_escape_string ()
-
30-09-2019 - |
Question
Si je magic_quotes
en marche et j'utiliser mysql_real_escape_string
, la chaîne sera le double échappé? Est-il causer des problèmes?
Je suppose donc basée sur la fonction get_magic_quotes()
mais juste obtenir la confirmation.
(. P.S Il est plus facile de poser cette question que le test dans mon bureau avec toute la sécurité que nous avons mis en place - Il me faut 10-15 pour tout configurer pour un environnement utilisable)
La solution
Si vous échapper à une valeur obtenue à partir de get / entrée post / cookies, il possède déjà une addslashes()
appliquée à , il passe donc par mysql_real_escape_string()
sera en fait, guillemet.
Pour em bande:
if (get_magic_quotes_gpc())
{
$_GET = json_decode(stripslashes(json_encode($_GET, JSON_HEX_APOS)), true);
$_POST = json_decode(stripslashes(json_encode($_POST, JSON_HEX_APOS)), true);
$_COOKIE = json_decode(stripslashes(json_encode($_COOKIE, JSON_HEX_APOS)), true);
$_REQUEST = json_decode(stripslashes(json_encode($_REQUEST, JSON_HEX_APOS)), true);
ini_set('magic_quotes_gpc', 0);
}
Cette question a d'autres options pour décapage citations / traiter avec PHP horrible magic_quotes_gpc
' fonction.
Autres conseils
Lire la documentation de mysql_real_escape_string
(I espérons que ce n'est pas difficile aussi bien):
Remarque: Si
magic_quotes_gpc
est activé, appliquez d'abordstripslashes()
aux données. En utilisant cette fonction sur des données qui ont déjà été échappées échappera aux données deux fois.
Bien sûr, la meilleure façon est de mettre magic_quotes hors tension.
wuth PHP habitude / config Apache, cette ligne
php_flag magic_quotes_gpc 0
dans le fichier .htaccess
fera la chose.
mais dans le but de compatibilité, une fonction peut être utilisée dans certains fichiers de configuration aussi.
if ( get_magic_quotes_gpc( ) ) {
$_GET = array_map_recursive('stripslashes', $_GET) ;
$_POST = array_map_recursive('stripslashes', $_POST) ;
$_COOKIE = array_map_recursive('stripslashes', $_COOKIE) ;
$_REQUEST = array_map_recursive('stripslashes', $_REQUEST) ;
if (isset($_SERVER['PHP_AUTH_USER'])) stripslashes($_SERVER['PHP_AUTH_USER']);
if (isset($_SERVER['PHP_AUTH_PW'])) stripslashes($_SERVER['PHP_AUTH_PW']);
}
un des plus faciles
Si j'ai magic_quotes sous tension et J'utilise mysql_real_escape_string, sera Tring être deux se sont échappés?
Oui, il mais vous pouvez faire quelque chose comme ça si:
if (get_magic_quotes_gpc())
{
$escaped = stripslashes($your_vars);
}
Remarque: Vous pouvez désactiver les citations magiques de php.ini ou utilisez la fonction ci-dessous pour la remplacer:
// no more magic quotes
function get_magic_quotes_gpc()
{
return false;
}