IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

fonction anti injection


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut fonction anti injection
    Bonsoir, j'aimerais votre avis sur cette fonction. Est-elle efficace contre les injections sql?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    function mysql_escape_input($value) {
     
    	if ((!is_null($value)) && strlen($value) > 0) {
    		$retval = utf8_decode($value);
    		if (get_magic_quotes_gpc())
    			$retval = stripslashes($retval);
    		$retval = mysql_real_escape_string($retval);
    		$retval = addcslashes($retval, '%_'); // escape jokers du LIKE
    		$retval = utf8_encode($retval);
    	}
    	else
    		$retval = $value;
    	return $retval;
     
    }

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A quoi servent les decodage UTF8 ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Ben justement je me le demande, c'est pour ça que je poste pour avoir vos lumières sur cette fonction.

    Il est vrai que l'idée d'avoir une fonction pour sécuriser mes données est alléchante, surtout pour ne pas oublier d'en protéger une au passage.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Bah plus simplement tu n'as qu'à faire comme indique le manuel

    mysql_real_escape_string avec mysql

    mysqli_real_escape_string avec mysqli

    et des requêtes préparées avec pdo

    A noter qu'on peut aussi faire des requêtes préparées avec mysqli. Pour des données sensibles c'est peut-être un peu mieux que mysqli_real_escape_string

    Concernant l'extension, le manuel ne conseille pas d'utiliser mysql pour les nouveaux projets car le développement a été arrêté. Tu devrais utiliser mysqli ou pdo.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Avec utf8_decode, tout caractère qui n'est pas représentables en ISO-8859-1 est perdu. Alors que mysql_real_escape_string tient justement compte du jeu de caractères de la connexion (ainsi que du mode d'échappement - idem via une requête préparée, bien sûr).

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    PDO fait aussi du non préparer (heureusement), c'est PDO::quote pour protéger les valeurs

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    PDO fait aussi du non préparer (heureusement), c'est PDO::quote pour protéger les valeurs
    Oui mais bon on parle du code le plus optimisé pour se protéger des injections, et depuis le temps qu'on nous serine que les requêtes préparées offrent une sécurité supérieure...

    Cela dit t'as raison de préciser qu'on est pas obligé de faire des requêtes préparées avec pdo car c'est devenu presque systématique dans les codes qu'on trouve sur le net, et pourtant cela ne devrait être utilisé qu'à bon escient, puisque normalement c'est un chouia plus lent.

Discussions similaires

  1. fonction anti côte
    Par max33370 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 18/01/2010, 10h16
  2. fonction anti injection sql
    Par carmen256 dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2009, 17h22
  3. Fonction injective ?
    Par Panpan42 dans le forum C
    Réponses: 5
    Dernier message: 28/05/2007, 10h58
  4. Réponses: 20
    Dernier message: 03/02/2006, 10h55
  5. [VB.NET] fonction qui injecte du html dans une zone précise
    Par denisvignes dans le forum ASP.NET
    Réponses: 5
    Dernier message: 27/10/2005, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo