begin process at 2012 05 27 19:27:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > NETTOYAGE DES VARIABLES

NETTOYAGE DES VARIABLES


 Information sur la source

 Description

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

  • // 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]);
  • }
  • ?>
// 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.


 Sources du même auteur

Source avec Zip Source avec une capture PHPICT - GESTIONNAIRE D'IMAGE

 Sources de la même categorie

Source avec Zip Source avec une capture CAPTCHA AJAX ANTI-BOT par darkvador59
Source avec Zip Source avec une capture ACCÈS, ESPACE MEMBRE AVEC INSCRIPTION ET DÉSINSCRIPTION PAR ... par stephelle
Source avec Zip CRYPTAGE REVERSIBLE par Mokost
Source avec Zip Source avec une capture CREATION DE COMPTE AVEC CRYPTAGE ET ESPACE DE CONNEXION SEC... par bm1982
PROTÉGEZ VOS LIENS DE TÉLÉCHARGEMENT PAR MOT DE PASSE ET/OU ... par unlien

Commentaires et avis

Commentaire de Anthomicro le 27/12/2004 12:54:03

Salut ;-)

Mettre le register globals à off résoud ce problème, ceci dit j'aime bien le concept.

Pour le htaccess qui fixe le register globals à off :

mettre ceci dans un fichier .htaccess :

php_flag register_globals Off

Ensuite tu peux remplacer ton code par ça :

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



// secure.php //////////////////////////////////
<?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]);
}
?>

Voilà ;-)

a +

Commentaire de GRenard le 30/12/2004 17:16:58

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

Commentaire de Anthomicro le 30/12/2004 17:25:29

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 +

Commentaire de GRenard le 30/12/2004 18:02:04

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... :(

Commentaire de Anthomicro le 30/12/2004 18:07:28

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 +

Commentaire de Anthomicro le 30/12/2004 18:09:13

Concernant le niveau regardes ça, on va l'améliorer :

http://www.phpcs.com/forum.v2.aspx?ID=360866 ;-)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales