PHP: les données GET sont automatiquement déclarées en tant que variables

StackOverflow https://stackoverflow.com/questions/101850

  •  01-07-2019
  •  | 
  •  

Question

Prenez ce code:

<?php
if (isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];
}

if ($action) {
    echo $action;
}
else { 
    echo 'No variable';
}
?>

Puis accédez au fichier avec? action = test Existe-t-il un moyen d'empêcher que $ action soit automatiquement déclarée par l'EEG? Autre que l'ajout bien sûr

&& !isset($_GET['action'])

Pourquoi voudrais-je que la variable soit déclarée pour moi?

Était-ce utile?

La solution

Vérifiez votre php.ini pour le paramètre register_globals. Il est probablement allumé, vous le voulez.

  

Pourquoi voudrais-je que la variable soit déclarée pour moi?

Ce n'est pas le cas. C'est un risque de sécurité épouvantable. Il rend globales les variables Environment, GET, POST, Cookie et Server (Manuel PHP) . Voici quelques variables réservées en PHP.

Autres conseils

On dirait que register_globals dans votre php.ini est le coupable. Tu devrais éteindre ça. C'est également un énorme risque pour la sécurité de l'avoir.

Si vous êtes sur un hébergement partagé et que vous ne pouvez pas modifier le fichier php.ini, vous pouvez utiliser ini_set () pour désactiver register_globals.

Désactivez register_globals si je comprends votre question. Voir http://us2.php.net/manual/fr/language .variables.predefined.php

si vous n'avez pas accès au php.ini , un ini_set('register_globals', false) dans le script php ne fonctionnera pas (les variables sont déjà déclarées) Un .htacces avec:

php_flag register_globals Off

peut parfois aider.

Vous pouvez vérifier si toutes les variables sont déclarées correctement en définissant le niveau de journalisation PHP dans PHP.INI sur

.
error_reporting  =  E_ALL 

Votre extrait de code devrait maintenant générer un AVIS.

À un moment donné dans l'histoire de php, ils ont pris la décision controversée de désactiver register_globals par défaut car il s'agissait d'un énorme danger pour la sécurité. Cela donne à n'importe qui le potentiel d'injecter des variables dans votre code, ce qui crée des conséquences impensables! Cette & Quot; fonctionnalité & Quot; est même supprimé dans php6

Si vous remarquez qu'il est allumé, contactez votre administrateur pour le désactiver.

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