Vision du web. La réponse collaborative.

Gagner des Bitcoins.

Obtenir des Bitcoins Gratuitement !
Le HackerSpace Vision du web.
La réponse collaborative.
Le glider des Hackers.
Un symbole de rassemblement.
QWERTY.
Du clavier au terminal.
GNU / Linux Debian.
La distribution universelle.
GNU / Linux Ubuntu.
Linux pour les êtres humains.
GNU / Linux Arch.
Un Linux léger et flexible.
Nom de code Linux.
Documentaire FR.

Le montant des donations pour Vision du web est de 0.0038596616035225 Monero.

Please disable Adblock!

Un simple clic permet de miner de la monnaie numérique Monero avec les ressources de votre machine.
Soutenir Vision du Web sans rien dépenser, sans changer de page, sans publicité à consulter.

Vous n´êtes pas identifié(e).

Nous sommes le jeudi 19 octobre 2017. Il est .

Nous avons 220 invités et aucun membre en ligne

 
HackerSpace !

PHP

PHP4 - PHP5 - Variables super-globales

PHP4 - PHP5 - Variables super-globales

 

PHP4 - PHP5 - Variables super-globales

Les variables super-globales sont passées de On à Off depuis PHP 4.2.0.

Lorsqu'elles sont actives, le programmeur ne sait pas exactement d'où provient le contenu de la variable, et ne peut que faire des suppositions.
De ce fait la programmation de scripts peu sur est possible.

Exemple de mauvaise utilisation de register_globals = on.

<?php
// $authorized = true uniquement si l'utilisateur est identifié
if (authenticated_user()) {
$authorized = true;
}

// Comme nous n'avons pas initialisé $authorized avec false, cette dernière
// peut être définie via register_globals, comme avec l'URL GET auth.php?authorized=1
// Tout le monde peut facilement être reconnu comme identifié!
if ($authorized) {
include "/donnees/critiques/data.php";
}
?>

Lorsque register_globals est activé, la logique ci-dessus peut être prise en défaut.
Lorsque register_globals est désactivée $authorized ne peut plus être assignée via la requête, et le script est sûr.
Il reste recommandé de toujours initialiser ses variables :
Ajouter $authorized = false et le script peut fonctionner avec register_globals on ou off, les utilisateurs étant par défaut non-identifiés.

register_globals, cette fonctionnalité est obsolète et dangereuse.
(supprimée dans PHP6)

Un autre exemple avec les sessions.
Lorsque register_globals est activé, on peut aussi utiliser $username mais il faut garder en tête que $username peut provenir d'autres biais, tels que GET (via l'URL).

Exemple d'abus de sessions avec register_globals à on ou off.

<?php
// Nous ne savons pas d'où provient $username mais nous savons que $_SESSION contient les données de session
if (isset($_SESSION['username'])) {
echo "Bonjour <strong>{$_SESSION['username']}</strong>";
} else {
echo "Bonjour <strong>visiteur</strong><br />";
echo "Voulez-vous vous identifier?";
}
?>

Il est possible de prendre des mesures préventives pour être alerté lorsqu'une tentative d'usurpation est faite.
Si vous savez à l'avance de quelle variable le nom d'utilisateur doit provenir, vous pouvez vérifier si les données que vous manipulez sont d'une origine contrôlée.
Même si cela ne garantit pas que les données ne puissent être falsifiées, cela complique la tache du faussaire.
Si vous ne vous préoccupez pas de l'origine des données, vous pouvez utiliser la variable $_REQUEST qui contient un mélange de données GET, POST et COOKIE.

Détection simple de fausses variables.

<?php
if (isset($_COOKIE['MAGIC_COOKIE'])) {
// MAGIC_COOKIE provient d'un cookie.
// Assurez-vous de valider les données du cookie!
} elseif (isset($_GET['MAGIC_COOKIE']) || isset($_POST['MAGIC_COOKIE'])) {
mail("[email protected]", "Tentative possible d'attaque", $_SERVER['REMOTE_ADDR']);
echo "Alerte sécurité, l'admin a été prévenu.";
exit;
} else {
// MAGIC_COOKIE ne provient pas de REQUEST
}
?>

 

Désactiver les variables super-globales

Ajouter la ligne suivante dans votre fichier .htaccess

php_value register_globals OFF
// Si cela ne fonctionne pas, tester avec ce code
SetEnv REGISTER_GLOBALS 0

Si votre hébergeur ne vous permet pas cette possibilité vous pouvez tenter de modifier le fichier php.ini si vous y avez accès.

register_globals = 0

Désactiver l'option register_globals ne sécurise pas le code.
Pour chaque donnée reçu, il faut appliquer un maximum de validations : vérifier les données du visiteur et initialiser les variables.
Pour vérifier les variables non-initialisées, voir la fonction error_reporting() qui peut afficher les erreurs de niveau E_NOTICE.

Si vous utilisez PHP 5.4 ou supérieur, il est inutile de s’en préoccuper, elle est obsolète et c’est tant mieux pour la sécurité.
Certains hébergeurs mettent encore ce paramètre sur ON sur les serveurs mutualisés. Vérifiez cela avec votre hébergeur et CORRIGEZ SI NECESSAIRE.
Si un script exige que le paramètre PHP Register_Globals soit sur ON. Oubliez le ! Trouvez un autre script.

REMARQUE ! Ce site utilise des cookies et autres technologies similaires.

Si vous ne changez pas les paramètres de votre navigateur, vous êtes d'accord. En savoir plus

J'ai compris

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation de Cookies pour vous proposer un accès membre personnalisé et réaliser des statistiques de visites.

Vision du web sur votre réseau social

Pour que le mal triomphe, il suffit que les hommes de bien ne fassent rien.
[Edmund Burke]

Votre hébergement internet avec LWS.