Jump to content
×
×
  • Create New...

Class - Security


Galet

Recommended Posts

  • 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

Link to comment
  • Replies 5
  • Created
  • Last Reply

Top Posters In This Topic

  • 1 year later...

Tu inclus ce fichier dans ton index grâce à un require, et si j'ai bien compris le principe, à chaque validation de formulaire, tu fais une Secu() de ta variable suivant le type d'entrée.

 

#Alkimyst

295436Alkmys.png

« A change of mind means changing many things. That's why I'm now Alkimyst. »

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.