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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Sécuriser une variable GET avec des caractères spéciaux

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

par AB » 13 oct. 2011, 23:48

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.

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

par zzzzzz » 13 oct. 2011, 20:47

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

par xTG » 13 oct. 2011, 19:09

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 ?

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

par zzzzzz » 13 oct. 2011, 18:58

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.