Question

Je travaille sur l'application il y a construit ans, qui a récemment cessé de fonctionner correctement. Ancien programmeur dit qu'il pourrait être accès à des variables $_GET ou $_POST sans les lire à partir $_GET[] array, mais à travers le register_globals

Je veux demander: (par exemple de façon directe) Quelles sont les différentes façons d'accéder aux variables de $_GET sans utiliser tableau $_GET[] et, si possible, comment puis-je vérifier si cette application utilise l'un d'eux

?

Merci d'avance

EDIT : Les autres moyens dont je me souvenais était register_globals, pas magic_quotes. De plus, je ne veux pas utiliser , mais plutôt de détecter si elle a été utilisée et dernière mise à jour du serveur dépréciée (ce que pourrait expliquer pourquoi l'application a cessé de fonctionner correctement)

EDIT : Mon anglais est horrible aujourd'hui. Comme je l'ai expliqué dans l'une des réponses: Je dois vérifier, si programmeur d'origine utilisé une méthode obscure et / ou désapprouvée d'obtenir des variables de chaîne de requête à PHP, l'application des valeurs fonctionne maintenant avec sont mal / non initialisées

IMPORTANT EDIT : import_request_variables est sur la table, il ne sert pas. Tous les tableaux de $_ sont sur la table aussi, car dernière mise à jour ne leur a cassé (=> ils encore du travail). Comment puis-je détecter les variables sont initialisés avec register_globals?

UNE AUTRE EDIT : J'ai trouvé ceci:

foreach ($_POST as $k => $v) {
  eval("\$".$k." = '".$v."';");
}
foreach ($_GET as $k => $v) {
  eval("\$".$k." = '".$v."';");
}

Aurait-il été rompu par l'un des dernière Mises à jour (il y a 1 semaine.)?

Était-ce utile?

La solution

Vous voulez dire par et Globals enregistrer pas Citations magiques ... BTW est pur Register Globals mal jamais les utiliser (et ils sont dépréciées depuis PHP 5.3.0)!

Modifier Si vous voulez vérifier si l'application utilisée Globals enregistrer, essayez de rechercher des valeurs de $_GET comme variables. Par exemple, pour essayer de index.php?id=123 à la recherche de $id dans le code PHP. Si vous trouvez cela ne signifie pas que le script utilise mais si Register Globals $id vient de nulle part et n'est jamais initialisé / setted c'est un bon (mauvais!) Signe que l'application utilise Globals ... enregistrer

Autres conseils

$_SERVER["QUERY_STRING"] vous donnera la chaîne GET brute.

Cela dit, cela sonne comme un problème qui doit être fixé à sa racine, et non pas à l'aide d'une autre variable.

Si les guillemets magiques sont un problème, faire une vérification pour savoir si elles sont activées, et de traiter les données entrantes en conséquence.

Désactivation Quotes magiques dans les spectacles manuel PHP d'une manière à « fixer » les données entrantes selon que la fonctionnalité est activée ou non. Il est pas très efficace pour d'énormes quantités de données, mais devrait le faire dans une tâche de tous les jours.

Vous avez également $ _REQUEST , import_request_variables , le codeur d'origine peut ont utilisé pour récupérer le contenu d'une variable GET et l'insérer dans une autre variable qui est ensuite référencé par la suite.

est un Globals enregistrer fonctionnalité horrible programmes PHP anciens se fondent souvent sur.

Avec register globals enclenchés, PHP se penchera sur les variables GET et POST et les « promouvoir » aux noms de variables normales -. Par exemple $_GET['myvar'] seraient accessibles dans le code comme $myvar

Entre autres, ce qui rend le programme très facile pour les pirates de briser tout simplement en essayant de deviner ce que les autres noms de variables le programmeur peut-être utilisé. Le registre des caractéristiques globals a donc été désactivé par défaut depuis longtemps, est maintenant officiellement désapprouvée, et sera complètement supprimée dans une version future.

Parce que les variables utilisées de cette manière sont référencés d'une manière qui ne se distingue pas des variables normales, cela signifie que d'essayer de mettre à jour l'ancien code que les utilisations peuvent register globals être très difficile. Cela ne dépend beaucoup de la façon dont le code est écrit.

Le problème est probablement PHP de register_globals. Cette option permet $_GET['some_var'] ou leur version équivalente $_POST disponible $some_var automatiquement. Ceci est dépréciée et vous devriez certainement pas l'utiliser, mais l'autre programmeur aurait pu les utiliser dans cette application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top