Nettoyage des variables

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 157 fois - Téléchargée 32 fois

Contenu du snippet

Lorsque register_global est a on, toutes les variables passent, par mesure de sécurité mieux vaut détruire les variables qui ne sont pas requises a l'exécution du programme. Ce programme nettoie les variables suspectes. Mieux vaut placer cette procédure dans un include comme ça si le register_global passe a off il sera facile de changer le "secure.php" pour enregistrer les variables permises.

Source / Exemple :


// dans le script ///////////////////////////////
$securityenter = array("var1","var2", "var3");
require "secure.php";

// secure.php //////////////////////////////////
<?
// Liste les variables entrées
$sec = explode("&",$_SERVER["QUERY_STRING"]);

// Pour chaque variable entrée
for ($i=0;$sec[$i];$i++) {

  // Récupère le nom
  $sec2 = explode("=",$sec[$i]); 
  $danger = 1;
  
  // Si dans la liste des pas dangereux : ok
  foreach($securityenter as $security) if ($sec2[0] == $security) $danger = 0;
  
  // Si dangereux détruit la var suspecte
  if ($danger == 1) unset($$sec2[0]);
}
?>

Conclusion :


Ne pas oublier que ce programme ne sécurise pas ce qu'il y a l'intérieur des variables, pour les vars numériques ne pas oublier $var*=1; et pour les alphanumériques addslashes et strip_tags.

A voir également

Ajouter un commentaire Commentaires
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Concernant le niveau regardes ça, on va l'améliorer :

http://www.phpcs.com/forum.v2.aspx?ID=360866 ;-)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Heu ton hébergeur si il a une version de php vieille de deux ans et demi comme tu dis, t'appelles ça un hébergeur (lol) ?

concernant le niveau oui c'est dommage, mais bon ça va remonter surement (on peut pas descendre plus je pense) ^^

a +
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Merci pour le tit bienvenue :P
Mais, je ne pense pas que TOUS les hébergeurs l'accceptent... yen a un pour une company ou je fais un site web, ils fonctionnent sous Windows 2000, et OMG tu pleurerais à savoir ce qu'ils ont...
Ils ont une version spécial de PHP vieilles de 2ans et demi et genre c'est une version modifiée pour qu'elle fonctionne avec Windows 2000 à eux... donc $_SERVER['DOCUMENT_ROOT'] n'existe pas, les sessions ne fonctionnent pas, display_errors est à Off, tout un foutu bordel :P Alors je te dis pas, les htaccess ce qu'il font :P

@±, oh mais je ne sais pas si je vais rester ... le niveau semble bas... :(
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Lol après 6 mois d'absence, retour de GRenard !!!!

Bienvenue ;-)

Donc pour ce qui est du htacess ça fonctione chez tous les hébergeurs, après en dédié si tu veux ne pas le faire fonctionner ça me dérange pas lol ^^

Pour ce qui est du code j'ai pas regardé en profondeur aussi tes remarques quant aux modifs dans la boucle sont pas mal ;-)

a +
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
wouaaa ! Anthomicro, je ne m'étais jamais penché sur le fait qu'on pouvait faire ca dans le htacces... j'ai remarqué ca, mais il y a de lourdes contraintes !
Il faut que ton php soit chargé en module et non en cgi, il faut que ton AllowOverride ne soit pas à None dans Apache (et ca c'est pas toujours toi qui le décide !!)

Hey RaphAstronome, au lieu de faire deux boucles une dans l'autre, pourquoi ne fais tu pas la fonction in_array() ? Ou sinon, au moins, break ta boucle intérieur lorsque tu as trouvé la variable ! (Si tu corriges, rajoute dont <?php au lieu de <?)
Eh, c'est rare les for comme ca : for ($i=0;$sec[$i];$i++), tu dois venir de C++ pour faire ca :P parce que de cette manière la ca génère un Warning car le $sec[$i] est testé une fois de trop (ce qui n'est pas grave en soit et qui est normal)... mais tu devrais utiliser une fonction en php pour vérifier si l'index du tableau existe... Il faut utiliser isset()
Va lire ceci si tu veux :) http://www.phpcs.com/code.aspx?ID=24870
Afficher les 6 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.