Page 1 sur 1

Sécuriser une variable GET avec des caractères spéciaux

Posté : 13 oct. 2011, 18:58
par zzzzzz
Bonjour,

J'explique mon problème. Je génère un code d'activation pour les emails de type : mS#eRrKc4M#V:f0eNqy

Pour activer le compte j'envoi donc un lien : http://www.site.../register.php?varcle= mS#eRrKc4M#V:f0eNqy

J'utilise une fonction pour sécuriser mes variables GET et POST : $string = mysql_real_escape_string($string); avant de faire ma requete SQL. Problème lorsque je fais un echo de la clé j'obtiens : mS il supprime donc tout ce qu'il a après le #.

Es-ce vraiment nécéssaire de filtrer la variable GET sachant qu'il ne s'agit que d'un SELECT sur un champ sql "emailcode". Sinon comment sécuriser ma variable GET. Y-a t'il un risque à ne pas filtrer?

Merci d'avance pour votre aide.

Re: Sécuriser une variable GET avec des caractères spéciaux

Posté : 13 oct. 2011, 19:09
par xTG
C'est pas la fonction PHP qui te supprime le reste, mais le fonctionnement des URLs.
Tout ce qui se trouve après un # est un nom d'ancre.

As-tu essayé urlencode() pour passer ce paramètre en url ?

Re: Sécuriser une variable GET avec des caractères spéciaux

Posté : 13 oct. 2011, 20:47
par zzzzzz
MErci beaucoup! Effectivement le problème était de là! J'ai une autre question. Je filtre des variables POST avec erg pour accepter uniquement les lettres ou chiffres. Es-ce que j'ai besoin de quand même passer par derrière avec mysql_real_escape_string(); ou c'est inutile?

Re: Sécuriser une variable GET avec des caractères spéciaux

Posté : 13 oct. 2011, 23:48
par AB
Faut plus utiliser ereg (déprécié) mais preg_match à la place.

Si tu es certain de ton filtrage tu peux normalement te passer de mysql_real_escape_string() mais d'un autre côté cela ne gêne en rien de le laisser en place donc à ta place je le conserverais.

Sinon tu pourrais aussi utiliser filter pour filter ton post mais c'est pas forcément plus simple à mettre en place.