php 5.4 magic_quotes_gpc alternative?
J'ai été en utilisant php 5.2
plus tôt. Maintenant, je veux mettre à jour php 5.4.
Magic quotes sont supprimés maintenant. Je veux que mon application fonctionne correctement. Quelle fonction je dois utiliser pour s'échapper de données mysql_real_escape_string()
ou addslashes()
?
Qui fonctionnent à partir de ci-dessus vous donnera les mêmes résultats que de magic_quotes_gpc
réglage??
- Il dépend de la couche de base de données que votre application utilise. Il y a une bonne échapper la fonction pour chaque base de données de la bibliothèque.
- Est-ce que votre application s'appuient sur
magic_quotes_gpc
? ce qui est une très mauvaise idée. - Oui xdazz. Il est. Elle est très ancienne application et j'ai pour le faire fonctionner.
- Je n'utilise aucune base de données de la couche qu'elle est très ancienne application et je suis en utilisant les fonctions de mysql.
- Si votre couche de base de données est
mysql_*
alors - Oui, nous utilisons mysql_* fonctions de mysql interaction.
mysql_real_escape_string()
est mieux queaddslashes()
, qui filtre le plus de caractères illégaux. Si vous êtes à la manipulation du code legacy, vous pouvez utiliser php-magic-quotes pour mettre en œuvremagic_quotes_gpc
.
Vous devez vous connecter pour publier un commentaire.
De son mieux pour utiliser des requêtes préparées, comme l'a suggéré ici pour des raisons de sécurité. Mysql_real_escape_string pourrait ne pas être suffiecient à prévenir l'injection sql par exemple, parce que les jeux de caractères multi-octets peuvent être victimes de violence en dépit de la fonction d'échappement ().mysql_real_escape_string() par rapport à des Déclarations Préparées à l'avance.
Préparées en PHP peut être utilisé comme ceci:
Plus d'informations sur les instructions préparées en PHP. Donc en conclusion, si vous avez la possibilité de modifier votre demande de déclarations préparées à l'avance, ce serait la meilleure façon de le gérer.
Mise à JOUR (totalement non recommandé)
Si vous voulez vraiment garder à l'état, utiliser addslashes() pour chaque $GET et $variable POST. Il fait la même manuellement ce que magic_quotes allumé l'a fait avec tous les $GET et $variables POST. Mais j'ai vraiment suppose que c'est moins de travail pour utiliser mysqli avec mysqli_real_escape_string ou mieux préparées 🙂
http://php.net/manual/de/function.addslashes.php
Il est toujours préférable de migrer vers PDO et les requêtes préparées comme indiqué par @alex ci-dessus.
Si ce n'est pas faisable, absolument échapper entrant des données de chaîne avec
mysql_real_escape_string()
, et de valider les données de nombre entier, par exemple à l'aide defilter_input()
comme indiqué dans cette réponse.addslashes()
ne convient pas à s'échapper de la méthode pour les requêtes mySQL.addslashes()
n'est pas suffisant pour sécuriser les données entrantes; il n'est pas parfait à 100% de protection.mysql_real_escape_string()
est le chemin à parcourir. C'est juste un choix différent de fonctions, n'est-ce pas?Parce que je ne peux pas introduire db couche sur mon application et je veux une solution rapide, j'ai utilisé addslashes() parce que la fonction addslashes() échappe à la simple quote ('), guillemet double ( " ), (barre oblique inverse) et NUL (l'octet NUL) exactement ce que magic quotes échapper.
Code:
$$_SGK = smartQuotes($_SGV);
non seulement ajoute des barres obliques, mais aussi affecte la valeur d'une variable globale au lieu de $_GET,$_POST, etc, ... comme "register_globals" qui servent à faire il y a 10 ans. Utilisation${$_SG}[$_SGK] = smartQuotes($_SGV);
au lieu de changer le gpc globals.addslashes()
donne les mêmes résultats que demagic_quotes_gpc
réglage de la référence de Magic Quotes.Utilisation magic_quotes_gpc sur PHP 5.4 ci-dessus
Si vous souhaitez exécuter
magic_quotes_gpc
sur PHP 5.4 ou une version supérieure pour votre héritage, code, vous pouvez utiliser yidas/magic-quotes:Nous avons besoin de addslashes dans la Demande, la Poste, Obtenir des & biscuits. Vous pouvez obtenir ce code ci-dessous. Inclus code ci-dessous dans votre fichier commun .