Sécurisation des envois de formulaire ? + expressions régulières

Sécurisation des envois de formulaire ? + expressions régulières - PHP - Programmation

Marsh Posté le 22-12-2005 à 10:06:57    

Bonjour à tous !  
Dites moi, je voudrais être sûr d'un truc... Comment faites vous pour sécuriser vos envois de formulaire ? Moi j'utilise une petite fonction de sécurisation basée un peu sur la sécurisation que fait PhpBB :  
 

Code :
  1. function securise($chaine)
  2.            {
  3.                 $html_entities_match = array('#&(?!(\#[0-9]+;))#',
  4.            '#<#', '#>#');
  5.                 $html_entities_replace = array('&amp;', '&lt;',
  6.            '&gt;');
  7.            
  8.                 $unhtml_specialchars_match = array('#&gt;#', '#&lt;#',
  9.            '#&quot;#', '#&amp;#');
  10.                 $unhtml_specialchars_replace = array('>', '<', '"',
  11.            '&');
  12.            
  13.                 $chaine = preg_replace($html_entities_match,
  14.            $html_entities_replace,
  15.            preg_replace($unhtml_specialchars_match,
  16.            $unhtml_specialchars_replace, trim($chaine)));
  17.            
  18.            
  19.                 if( !get_magic_quotes_gpc() )
  20.                 {
  21.                      $chaine = addslashes($chaine);
  22.                 }
  23.            
  24.                 return $chaine;
  25.            }


Est-ce suffisant, ou y a t-il quelque chose de mieux ?  
 
Et tant que j'y suis, j'ai un problème avec ma fonction de vérification syntaxique de mail ..
 

Code :
  1. function ValidMail($mail)
  2. {
  3. if(preg_match('!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!', $mail) && checkdnsrr(preg_replace('!^[a-z0-9._-]+@([a-z0-9._-]{2,}\.[a-z]{2,4})$!', '$1', $mail)))
  4. return true;
  5. return false;
  6. }


 
Le problème étant qu'elle fait un peu de zèle, elle ne valide pas certains mails qui existent vraiment.. En auriez vous une un peu moins stricte ? :)
 
Merci à tous :hello:


---------------
Hello hello super jello
Reply

Marsh Posté le 22-12-2005 à 10:06:57   

Reply

Marsh Posté le 22-12-2005 à 17:20:34    

y'a strip_tags() qui est pas non plus comme fonction...

Reply

Marsh Posté le 22-12-2005 à 20:08:24    

Pas non plus ? = pas mal non plus ? :)


---------------
Hello hello super jello
Reply

Marsh Posté le 23-12-2005 à 02:56:53    

t'as pas plus laid comme code encore ?
 
- Register globals à off
- stripslashes sur tes variables globales suivant la config de php
- insertion en base : addslashes() sur tes chaines
- affichage : htmlentities() pour proteger tes formulaire des failles XSS
 
c'est tout est c'est securisé !
 
phpBB est la plus belle usine à gaz que j'ai pu voir(bourré de patchs, à ton avis pourquoi ?)
idem pour OsCommerce
 
Vaut mieux apprendre par soit meme que se baser sur des scripts mal conçus, donc mauvaises habitudes de dev.
 


Message édité par Profil supprimé le 23-12-2005 à 02:58:39
Reply

Marsh Posté le 23-12-2005 à 09:56:46    

Erf, ouais, je veux bien te montrer un code plus beau, mais on va dire que j'ai pas forcément ton expérience en codage.. Je suis toujours étonné par le manque de tolérance face aux débutants sur Hfr :/
 
Bon, alors j'ai essayé de faire un peu ce que tu m'as dit , ça donne ça :
 

Code :
  1. function securise($chaine)
  2. {
  3. if (ini_get('register_globals')) {
  4.    $superglobals = array($_SERVER, $_ENV,
  5.        $_FILES, $_COOKIE, $_POST, $_GET);
  6.    if (isset($_SESSION)) {
  7.        array_unshift($superglobals, $_SESSION);
  8.    }
  9.    foreach ($superglobals as $superglobal) {
  10.        foreach ($superglobal as $global => $value) {
  11.            unset($GLOBALS[$global]);
  12.        }
  13.    }
  14. }
  15. if( !get_magic_quotes_gpc() )
  16.                {
  17.                     $chaine = addslashes($chaine);
  18.                }
  19. $chaine = addslashes($chaine);
  20. return htmlentities($chaine);
  21. }


 
un truc dans le genre ? je découvre petit à petit les fonctions, donc si y a une erreur monstrueuses, dites le moi sans me jeter contre un mur svp :) :hello:


---------------
Hello hello super jello
Reply

Marsh Posté le 23-12-2005 à 13:28:10    

tu te prends trop le choux. Passe simplement une string à ta fonction et appliques les fonctions qu'il ta donné. et retourne là Voila ...
 
Perso j'utilise une ptite astuce pour par exemple utiliser un id dans une requéte SQL passé par $_GET je le caste simplement en int
 
SELECT tolerance FROM HFR WHERE id_pseudo!='(int)$_GET["spike"]';
 
Comme ça t'est assuré davoir un entier
 
Par exemple :
 
function securise($foo) {
   return mysql_real_escape_string((strip_tags(addslashes(trim(rtrim($foo))))));    
}


Message édité par sky_striker le 23-12-2005 à 13:30:37
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed