Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1422 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1271661
pouzy
Ne signe pas d'autographes..
Posté le 22-12-2005 à 10:06:57  profilanswer
 

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
mood
Publicité
Posté le 22-12-2005 à 10:06:57  profilanswer
 

n°1271962
rufo
Pas me confondre avec Lycos!
Posté le 22-12-2005 à 17:20:34  profilanswer
 

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

n°1272052
pouzy
Ne signe pas d'autographes..
Posté le 22-12-2005 à 20:08:24  profilanswer
 

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


---------------
Hello hello super jello
n°1272180
Profil sup​primé
Posté le 23-12-2005 à 02:56:53  answer
 

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
n°1272236
pouzy
Ne signe pas d'autographes..
Posté le 23-12-2005 à 09:56:46  profilanswer
 

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
n°1272476
sky_strike​r
Posté le 23-12-2005 à 13:28:10  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
formulaire php[ACCESS]passage de paramètre entre formulaire et état
Mettre un formulaire dans un mailMettre à jour un classeur Excel intégré dans un formulaire Access
insérer automatiquement une date dans un formulaireformulaire de type file et le chemin complet
[PHP] Formulaire qui se reremplit si erreurInclure formulaire : probleme avec explorer mais pas firefox
verification remplissage formulaire via regexpproblème spam via formulaire en ligne
Plus de sujets relatifs à : Sécurisation des envois de formulaire ? + expressions régulières


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR