Aller au contenu

paie amour et formulaires


macatalan

Sujets conseillés

Bonjour,

Voila mon problème, je fais un site avec une partie a inscription ... Mais je crispe sur la sécurité du lieu !!!

Ma méfiance est ciblée sur l'injection php, mais je commence a me poser plus de questions que je n'ai de solutions au final. J'ai pas mal lu, htmlentities(), addslash() et autres expressions régulières... j'avais choisi de faire une verif restrictive par expressions régulières mais je butte sérieux...

Tant que l'on s'attaque a des choses relativement ciblées, encadré, c'est simple, logique facile ... Mais après avoir presque fini mon petit système je me rends compte d'un détail... j'ai oublié de prendre en compte les caractères accentués, tiret, apostrophes (y'en na pas dans mon prénom, ni mon adresse, zut.... :unsure:) et la commence ma misère !

Ma question est comment sécuriseriez vous les entrées d'un formulaire qui va se retrouver sauver dans une BDD... genre le nom et la rue de l'utilisateur ? Je me vois pas capable de faire un regex pour ça et en plus la présence potentiel d'apostrophe rend obligatoire la gestion du slashage (des fois que le truc soit héberger sans magic quotes) et htmlentities() qui modifie ' en ' se fait slasher par mon serveur local ...

:nonono: je comprend plus rien :thumbsdown:

Modifié par macatalan
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

En ce qui concerne les injections SQL, un simple addslashes résoud le problème si tu utilises des apostrophes pour délimiter les chaînes... ou encore mieux, tu laisse les magic quotes le faire pour toi.

Lien vers le commentaire
Partager sur d’autres sites

Voici les deux fonctions que j'utilise. Je ne sais pas si c'est 100% sécurisé, mais cela marche sans problème avec les accents, les apostrophes et les balises HTML (non interprétées) :

/* prepare_chaine : Prépare une chaine avant de l'insérer dans la bdd, la sécurité se joue ici */
function prepare_chaine($valeur){
// Stripslashes
if (get_magic_quotes_gpc()) {
$valeur = stripslashes($valeur);
}
// Protection si ce n'est pas un entier
if (!is_numeric($valeur)) {
$valeur = mysql_real_escape_string($valeur);
}
return $valeur;
}

/* decode_chaine : Prépare une chaine avant de l'afficher / Complément de prepare_chaine */
function decode_chaine($chaine){
$chaine = htmlentities($chaine);
$chaine = nl2br($chaine);
return $chaine;
}

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...