Fonction de sécurité contre la pollution des variables et le hijacking

0/5 (42 avis)

Snippet vu 6 458 fois - Téléchargée 28 fois

Contenu du snippet

Fonction pour lutter contre la pollution des variables vous appelez la fonction en tout début de page par exemple dans le header de votre site avant toute utilisation des super globales (get, server, env, post, cookie, etc)... cette fonction va tout simplement rechercher la présence de variable(s) interdite(s) dans les données soumises par l'internaute (get, post, cookie) et si elle en trouve elle met leur valeur à null... en parallèle un nettoyage de la super globale $GLOBALS est fait... c'est particulièrement utile pour ceux qui sont en register global à On et qui ont des mauvaises habitudes de codage (cela ne dispence bien entendu pas de prendre les bonnes habitudes)... ..

Source / Exemple :


/**

  • Check superglobals for contamination and to prevent session hijacking
*
  • @return void
    • /
function checkSuperGlobals() { $vars_array = array( 'GLOBALS', '_SESSION', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', ); $inputs = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) ? (array)$_SESSION : array()); foreach($inputs as $k => $v) { if (isset($GLOBALS[$k]) && !in_array($k, $vars_array)) unset($GLOBALS[$k]); elseif(in_array($k, $vars_array) && isset($_REQUEST[$k])) { $_REQUEST[$k] = null; if(isset($_GET[$k])) $_GET[$k] = null; if(isset($_POST[$k])) $_POST[$k] = null; if(isset($_COOKIE[$k])) $_COOKIE[$k] = null; } } }

Conclusion :


Il va de soit que ce n'est pas parce que vous utiliserez cette fonction que vous serez à l'abri de tout... .. .

En espérant que ça vous serve... .. .

@ tchaOo°

A voir également

Ajouter un commentaire Commentaires
FoxLeRenard
Messages postés
33
Date d'inscription
samedi 2 juillet 2005
Statut
Membre
Dernière intervention
29 octobre 2021

6 mai 2009 à 09:44
OK parfait et en tout cas merci,
Oui Oui bien sur je comprends la vitesse d'évolution ...
mais il reste encore bien des serveurs mal protégés !!!
A bientôt le plaisir de te croiser
kankrelune
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

6 mai 2009 à 09:36
Oui il faut executer ce code au début de toutes les pages concernées... après session_start() sinon la sg $_SESSION ne sera pas testée... .. .

Mais avant d'utiliser ce code vérifie ta version de php et surtout que register_globals est activé sinon ça ne sert à rien de l'utiliser... ça fait 4 ans que j'ai posté cette source php a évolué depuis... .. . ;o)

@ tchaoo°
FoxLeRenard
Messages postés
33
Date d'inscription
samedi 2 juillet 2005
Statut
Membre
Dernière intervention
29 octobre 2021

6 mai 2009 à 08:45
Oui c' est bien ton code de sécurité que tu dis de placer en tête, ça veut dire en tête de tout mes php ? et j'appelles la fonction de suite même avant d'avoir fait session_start(); ???

Au passage merci de m'avoir répondu si vite t' es génial !
kankrelune
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

6 mai 2009 à 08:11
? j'ai pas compris là... tu es sûr d'être sur la bonne source ? si c'est le cas si tu pouvais préciser... .. .

@ tchaOo°
FoxLeRenard
Messages postés
33
Date d'inscription
samedi 2 juillet 2005
Statut
Membre
Dernière intervention
29 octobre 2021

6 mai 2009 à 06:26
Hum ... ça va hurler mais j'oses ...
avec google on peut atteindre nos sites par nimporte quel PHP alors comment utiliser cette fonction juste a l'arrivée d'un visiteur,

En fait j'irais même bien plus loin, si j'ais passé cette bariére, j'ouvre
un autre onglet sur la même page je serais vu dans la même session non ?
Afficher les 42 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.