Aller au contenu

Class - Security


Galet

Messages recommandés

  • Funkiest

Centre de Téléchargement

Télécharger ( Interne )

Bonjour,

 

Voilà un script que j'ai trouvé sur un certain forum.

 

Révélation

 

Je l'ai approfondi et allégé, mais il est super !



//
// Security Function
//
// @fichier : functions.php
// @auteur : dst
// @version : 1.0.0
//

//------------------------------------------------------------------------------
// Usage
//------------------------------------------------------------------------------
// [email protected] Intégrer le fichier dans votre page
// ---> require functions.php;

// [email protected] Joindre la fonction à vos variables que vous voulez sécurisée
// --> dans le cas où la variable doit être un nombre obligatoirement et qu'elle sort d'une base de donnée, et que la connexion est gérée en MY_SQL : --> Secu($nom_de_ma_variable, 'INT', 'OUI', 'MY_SQL');
// --> dans le cas où la variable doit être un nombre obligatoirement et qu'elle sort d'une base de donnée, et que la connexion est gérée en MY_SQLI : --> Secu($nom_de_ma_variable, 'INT', 'OUI', 'MY_SQLI');
// --> dans le cas où la variable doit être un nombre obligatoirement et qu'elle ne sort pas d'une base de donnée : --> Secu($nom_de_ma_variable, 'INT', 'NON');
// --> dans le cas où la variable doit être une chaine de caractère obligatoirement et qu'elle sort d'une base de donnée, et que la connexion est gérée en MY_SQL : --> Secu($nom_de_ma_variable, 'STR', 'OUI', 'MY_SQL');
// --> dans le cas où la variable doit être une chaine de caractère obligatoirement et qu'elle sort d'une base de donnée, et que la connexion est gérée en MY_SQLI : --> Secu($nom_de_ma_variable, 'STR', 'OUI', 'MY_SQLI');
// --> dans le cas où la variable doit être une chaine de caractère obligatoirement et qu'elle ne sort pas d'une base de donnée : --> Secu($nom_de_ma_variable, 'STR', 'NON');
// --> dans le cas où la variable est de type indéterminée, mais que vous souhaitez quand même la sécuriser et qu'elle sort d'une base de donnée, et que la connexion est gérée en MY_SQL : --> Secu($nom_de_ma_variable, 'UNKNOWN', 'OUI', 'MY_SQL');
// --> dans le cas où la variable est de type indéterminée, mais que vous souhaitez quand même la sécuriser et qu'elle sort d'une base de donnée, et que la connexion est gérée en MY_SQLI : --> Secu($nom_de_ma_variable, 'UNKNOWN', 'OUI', 'MY_SQLI');
// --> dans le cas où la variable est de type indéterminée, mais que vous souhaitez quand même la sécuriser et qu'elle ne sort pas d'une base de donnée : --> Secu($nom_de_ma_variable, 'UNKNOWN', 'NON');
// --> dans le cas où la variable est sorti d'uneb ase de donnée en PDO, il faut gérer les variables par BinValue

function Secu($var, $type='STR', $bdd='NON', $sgbd=NULL)
{
   if((strtoupper($bdd) == "OUI") && !empty($sgbd)) 
   {
       if(strtoupper($sgbd) == "MY_SQL") $bdd = mysql_real_escape_string($bdd);
       elseif (strtoupper($sgbd) == "MY_SQLI") $bdd = mysqli_real_escape_string($bdd);
   }

   $var =
   // ANTI BLIND, UNION, IMG SRC, CSS, NULL BYTES, XSS, SQL,
   $avec = array('%00','chr(0)','0x00','../',';','%');
   $sans = array('_','_','_','_','_','_');
   $var = str_replace($avec, $sans, $var); 

   if    (        !preg_match('/((\%3D)|(=))[^\n]*((\%27)|(\')|(\-\-)|(\%3B)|()/i',$var) 
            && !preg_match('/\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix',$var)
            && !preg_match('/((\%27)|(\'))union/ix',$var)
            && !preg_match('/((\%27)|(\'))select/ix',$var)
            && !preg_match('/((\%27)|(\'))insert/ix',$var)
            && !preg_match('/((\%27)|(\'))update/ix',$var)
            && !preg_match('/((\%27)|(\'))delete/ix',$var)
            && !preg_match('/((\%27)|(\'))drop/ix',$var)
            && !preg_match('/exec(\s|\+)+(s|x)p\w+/ix',$var)
            && !preg_match('/((\%3C)|<)[^\n]+((\%3E)|>)/i',$var)
       )
   {
       if(strtoupper($type) == "INT")
       {
           if((@function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc()) || (strtolower(@ini_get('get_magic_quotes_gpc' === "on"))))
           {
               if (@function_exists('intval')) return intval($var);
               else return stripslashes(htmlspecialchars((int)$var, ENT_QUOTES));
           }
           else
           {
               if (@function_exists('intval')) return intval($var);
               else return addslashes(htmlspecialchars((int)$var, ENT_QUOTES));
           }
       }
       elseif(strtoupper($type) == "STR")
       {
           if((@function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc()) || (strtolower(@ini_get('get_magic_quotes_gpc' === "on")))) return stripslashes(htmlspecialchars((string)$var, ENT_QUOTES));
           else return strip_tags(htmlspecialchars((string)$var, ENT_QUOTES));
       }
       else
       {
           if((@function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc()) || (strtolower(@ini_get('get_magic_quotes_gpc' === "on")))) return stripslashes(htmlspecialchars($var, ENT_QUOTES));
           else return addslashes(htmlspecialchars($var, ENT_QUOTES));
       }
   }
   else 
   {
       exit('Error was occured, please try again.');
   }
} 
Il répare quelque faille.

 

 

Cordialement,

Hey hey

Lien vers le commentaire
  • Réponses 5
  • Created
  • Dernière réponse
  • 1 year later...

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


  • Flux d'Activité

    1. 2

      Serveur en Création

    2. 2

      Serveur en Création

    3. 2

      Serveur en Création

    4. 3

      Asiria2 Ultra-Fun - Serveur Ouvert

    5. 5

      Metin2 Download - Migration

    6. 0

      C++ Wiki Ingame

    7. 38

      Installer Ancestra Remake 54

    8. 2

      Ajouter une Commande Lau

  • En ligne récemment

    Aucun utilisateur enregistré regarde cette page.

×
×
  • Créer...

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.