Protection variable php contre les injections ?

  • Auteur de la discussion Auteur de la discussion Stellvia
  • Date de début Date de début
WRInaute impliqué
Bonjour,

J'ai une variable qui ne doit contenir que des chiffres, je la récupère comme ceci :

Code:
$id = filter_var($_GET['id '], FILTER_SANITIZE_NUMBER_INT);

Comme ca je suis certain qu'elle a que des chiffres.

Y a t-il besoin d'ajouter en plus
Code:
mysqli_real_escape_string
pour enregistrer dans mysql ou cela ne sert à rien ?
 
WRInaute impliqué
Je ne comprend pas ta réponse.

Mes variables sont filtrer selon les besoins, j'ai pris l'exemple le plus simple avec les chiffres.

Autre exemple :

Code:
$variable=preg_replace("#[^0-9a-zA-Z-_]#","",$_GET['variable']);

si j'ai besoin de ces symboles.


Je ne sais pas si c'est ca que tu appelle coder façon 1920.


Je voudrais savoir si mysqli_real_escape_string dois être utilisé tout le temps, ou si c'est seulement quand la variable est utilisé "brut" ?

C'est surtout une histoire de perf, je veux pas ajouter du code qui sert à rien.
 
WRInaute passionné
Moi si une variable ne doit contenir que des chiffres je ne me casse pas la tête :
$id = intval($_GET['id']);

en sachant que 0 n'est pas une id valide pour moi.

Sinon pour ta question, pas besoin d'utiliser la fonction mysqli si tu as déjà filtré les caractères que tu acceptes quand ce n'est que des chiffres ou des lettres ou d'autres mais sans les usual suspects.
 
WRInaute accro
manoa.ratefiarison a dit:
Plus facile, utiliser PDO et préparer ses requêtes. Plus d'info : http://goo.gl/kUFGKi
Attention parce que son astuce avec l'apostrophe et le stripslashes c'est une connerie ... car une seule quote va être passée uniquement lors de la query pour échapper mais sera pas enregistré dans la DB. Le gars avait probablement les magic quotes activées et donc 2 antislashes.
 
Discussions similaires
Haut