Protection requete SQL
Fermé
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
-
2 juin 2009 à 12:06
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 2 juin 2009 à 14:39
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 2 juin 2009 à 14:39
A voir également:
- Protection requete SQL
- Sentinel protection installer - Télécharger - Antivirus & Antimalwares
- Protection cellule excel - Guide
- Vous devez activer la protection du système sur ce lecteur - Forum Windows
- Blob sql ✓ - Forum Webmastering
- Rav endpoint protection c'est quoi ✓ - Forum Antivirus
10 réponses
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
100
2 juin 2009 à 12:17
2 juin 2009 à 12:17
Salut,
On utilise plutôt mysql_real_excape_string
https://www.php.net/manual/fr/function.mysql-real-escape-string.php
Car elle prend en compte le jeu de caractère de la connexion actuelle.
On utilise plutôt mysql_real_excape_string
https://www.php.net/manual/fr/function.mysql-real-escape-string.php
Car elle prend en compte le jeu de caractère de la connexion actuelle.
hanagi
Messages postés
135
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
13 décembre 2012
3
2 juin 2009 à 12:12
2 juin 2009 à 12:12
salut OKUNI, dsl j'ai pas de réponse pour toi mais j'ai plutot une question ,)
Je trouve ce sujet interessant mais j'ai pas compris "protection que l'on peut mettre sur une requete sql et les données qu'on enregistre vie un INSERT". Est ce qu'on protége ces requete? et de quoi les proteger?
voudrais-tu m'éclairer stp ? (curiosité :p)
Je trouve ce sujet interessant mais j'ai pas compris "protection que l'on peut mettre sur une requete sql et les données qu'on enregistre vie un INSERT". Est ce qu'on protége ces requete? et de quoi les proteger?
voudrais-tu m'éclairer stp ? (curiosité :p)
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
2 juin 2009 à 12:15
2 juin 2009 à 12:15
Tout simplement pour éviter :
1) le hackage (ça se dit? :p) de ton site (ou plutot de ta base de donnée)
2) pour éviter les failles et erreur a cause des ' ou ".
Donc j'espère diminuer mes failles sql avec de bonnes fonctions.
1) le hackage (ça se dit? :p) de ton site (ou plutot de ta base de donnée)
2) pour éviter les failles et erreur a cause des ' ou ".
Donc j'espère diminuer mes failles sql avec de bonnes fonctions.
ben85350
Messages postés
610
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
2 avril 2013
27
2 juin 2009 à 12:18
2 juin 2009 à 12:18
Il y de nombreuses failles possibles quand on utilise pas de fonctions particulières.
Exemple : les injections SQL : https://fr.wikipedia.org/wiki/Injection_SQL
Exemple : les injections SQL : https://fr.wikipedia.org/wiki/Injection_SQL
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
2 juin 2009 à 12:23
2 juin 2009 à 12:23
simplement utiliser mysql_real_excape_string ?
cette fonction protège aussi contre les balise html et JS?
cette fonction protège aussi contre les balise html et JS?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
hanagi
Messages postés
135
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
13 décembre 2012
3
2 juin 2009 à 12:43
2 juin 2009 à 12:43
Oh! ça c bon OKUNI ;) , mais je le savais pa :p
Pouvez vous me montrer comment on utilise ces fonctions? (syntaxe)
par exemple pour :mysql_real_excape_string
J'en ai aucune idée :s . Besoin de votre aide
Merci d'avance .
Pouvez vous me montrer comment on utilise ces fonctions? (syntaxe)
par exemple pour :mysql_real_excape_string
J'en ai aucune idée :s . Besoin de votre aide
Merci d'avance .
pyschopathe
Messages postés
1974
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
135
2 juin 2009 à 12:53
2 juin 2009 à 12:53
Pour rappel, il faut protéger toutes les données provenant de l'utilisateur afin d'éviter les injections SQL ou la perte de cohérence des données. Une petite recherche sur google en apprendra plus à ceux qui le souhaitent.
Une fonction ne suffit pas à assurer la sécurité de tes requêtes : les fonctions que tu présentes ne servent qu'à protéger les chaines de caractères, mais il faut aussi penser à vérifier que lorsque des valeurs numériques sont attendues, on insère bien des valeurs numériques, et idem pour les autres champs.
Si tu as une base de données mysql, utilise la fonction mysql_real_escape_string pour tes chaînes de caractères, sinon utilise htmlspecialchars.
Pour les valeurs numériques, tu peux utiliser is_numeric, pour les dates, les email, les numéros de téléphone, des expressions régulières seront toutes indiquées.
Tu les appelles en leur passant la chaine à protéger en paramètre :
Une fonction ne suffit pas à assurer la sécurité de tes requêtes : les fonctions que tu présentes ne servent qu'à protéger les chaines de caractères, mais il faut aussi penser à vérifier que lorsque des valeurs numériques sont attendues, on insère bien des valeurs numériques, et idem pour les autres champs.
Si tu as une base de données mysql, utilise la fonction mysql_real_escape_string pour tes chaînes de caractères, sinon utilise htmlspecialchars.
Pour les valeurs numériques, tu peux utiliser is_numeric, pour les dates, les email, les numéros de téléphone, des expressions régulières seront toutes indiquées.
Tu les appelles en leur passant la chaine à protéger en paramètre :
INSERT INTO table( 'login' ) VALUES mysql_real_escape_string( $POST['login'] );
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
100
2 juin 2009 à 12:50
2 juin 2009 à 12:50
Non elle mysql_real_escape_string ne protège pas des balises HTML, tu parlais de protection SQL pas de protection HTML.
On utilise toujours mysql_real_escape_string avant une insertion (ou update) dans la base afin de ne pas perturber le bon fonctionnement de la commande (effectivement pour les ' " \n et qq autres). Mais rien n'interdit d'y inserer des balises HTML (heureusement :-) )
Mais la protection du HTML c'est autre chose, par exemple au moment de traiter une donnée saisie par l'utilisateur on va vouloir filtrer les balises HTML, on va alors utiliser htmlentities.
On utilise toujours mysql_real_escape_string avant une insertion (ou update) dans la base afin de ne pas perturber le bon fonctionnement de la commande (effectivement pour les ' " \n et qq autres). Mais rien n'interdit d'y inserer des balises HTML (heureusement :-) )
Mais la protection du HTML c'est autre chose, par exemple au moment de traiter une donnée saisie par l'utilisateur on va vouloir filtrer les balises HTML, on va alors utiliser htmlentities.
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
2 juin 2009 à 13:26
2 juin 2009 à 13:26
Ok merci :)
quel est la différence entre htmlentities et htmlspecialchars ?
quel est la différence entre htmlentities et htmlspecialchars ?
pyschopathe
Messages postés
1974
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
135
2 juin 2009 à 13:29
2 juin 2009 à 13:29
htmlentities remplace tous les caractères ayant un équivalent en HTML par cet équivalent (& pour '&', > pour '>', etc), ce qui peut être utile dans certains cas, mais n'apporte pas de protection supplémentaire. Tourne toi vers la documentation php pour plus d'infos.
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
100
>
pyschopathe
Messages postés
1974
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
2 juin 2009 à 13:35
2 juin 2009 à 13:35
Pour moi c'est une protection indispensable (dans le cas d'affichage de données saisies par un utilisateur, blog, wiki ... ) ca évite des injections de code HTML (Cross-Site Scripting) en supprimant les interprétations des balises html notamment script, object, applet et embed
pyschopathe
Messages postés
1974
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
135
>
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
2 juin 2009 à 14:16
2 juin 2009 à 14:16
Tout à fait d'accord, mais ce n'est pas une protection contre les injections SQL. Il est aussi possible d'effectuer le remplacement des caractères à l'affichage par exemple, en fonction de moyen d'affichage (ce n'est pas forcément du HTML). Mais effectivement, si l'application contient des données visibles uniquement en HTML, il est préférable de les stocker directement encodés, ça évite de refaire le traitement à chaque affichage.
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
100
2 juin 2009 à 13:30
2 juin 2009 à 13:30
htmlspecialchar ne remplace que ' " & < >, htmlentities remplace tout ce qui a un équivalent en html ( caractères accentués ... )
https://www.php.net/manual/fr/function.htmlspecialchars.php
http://fr2.php.net/manual/fr/function.htmlentities.php
https://www.php.net/manual/fr/function.htmlspecialchars.php
http://fr2.php.net/manual/fr/function.htmlentities.php
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
2 juin 2009 à 13:44
2 juin 2009 à 13:44
J'ai regardé le manul php
si je comprend bien, si on utilise htmlentities(), on devra alors chaque fois qu'on affiche une donnée qui a été trensformé, utiliser html_entity_decode() pour enlever les transformations ?
si je comprend bien, si on utilise htmlentities(), on devra alors chaque fois qu'on affiche une donnée qui a été trensformé, utiliser html_entity_decode() pour enlever les transformations ?
pyschopathe
Messages postés
1974
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
135
2 juin 2009 à 14:17
2 juin 2009 à 14:17
Pas si tu affiches les données en HTML : dans ce cas, c'est le navigateur qui interprêtera les entités HTML et les affichera correctement : s'il lit é, il affichera é, etc.
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
>
pyschopathe
Messages postés
1974
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
2 juin 2009 à 14:22
2 juin 2009 à 14:22
Ok merci.
Quant tu dis "si tu affiches les données en HTML"
Il y a moyen de les afficher autrement?
Quant tu dis "si tu affiches les données en HTML"
Il y a moyen de les afficher autrement?
pyschopathe
Messages postés
1974
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
135
>
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
2 juin 2009 à 14:30
2 juin 2009 à 14:30
Bah avec PHP tu pourrais vouloir afficher du texte dans une image avec la librairie GD, créer un simple fichier texte, du XML, écrire un PDF, etc. Donc oui, il y a moyen de faire autre chose, il y a même plein de moyens !
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
>
pyschopathe
Messages postés
1974
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
2 juin 2009 à 14:31
2 juin 2009 à 14:31
Ok merci :)
pyschopathe
Messages postés
1974
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
135
>
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
2 juin 2009 à 14:39
2 juin 2009 à 14:39
De rien ! Pour mes posts précédent, ccm a converti les caractères HTML donc il fallait lire : "s'il lit é, il affichera é".
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
2 juin 2009 à 14:30
2 juin 2009 à 14:30
salut,
Quel est ou quel sont les meilleur fonctions pour éviter les erreur sql du entre autre au ' et " ?
il existe PDO depuis PHP5.
PDOStatement->Execute()
Quel est ou quel sont les meilleur fonctions pour éviter les erreur sql du entre autre au ' et " ?
il existe PDO depuis PHP5.
PDOStatement->Execute()