Protection requete SQL
okuni
Messages postés
1325
Statut
Membre
-
pyschopathe Messages postés 2053 Statut Membre -
pyschopathe Messages postés 2053 Statut Membre -
Bonjour,
J'aimerais savoir quel est la meilleur protection que l'on peut mettre sur une requete sql et les données qu'on enregistre vie un INSERT.
Je connais plusieur fonction mais je ne sais pas la quel est la meilleur.
Il y a
addslash()
htmlentities()
htmlspecialchars()
mysql_escape_string()
mysql_escape_real_string()
Il y a peut-être des faute d'orthographe car je les écrit de mémoire.
Quel est ou quel sont les meilleur fonctions pour éviter les erreur sql du entre autre au ' et " ?
Merci de vos réponses.
J'aimerais savoir quel est la meilleur protection que l'on peut mettre sur une requete sql et les données qu'on enregistre vie un INSERT.
Je connais plusieur fonction mais je ne sais pas la quel est la meilleur.
Il y a
addslash()
htmlentities()
htmlspecialchars()
mysql_escape_string()
mysql_escape_real_string()
Il y a peut-être des faute d'orthographe car je les écrit de mémoire.
Quel est ou quel sont les meilleur fonctions pour éviter les erreur sql du entre autre au ' et " ?
Merci de vos réponses.
A voir également:
- Protection requete SQL
- K9 web protection - Télécharger - Contrôle parental
- Requete sql pix ✓ - Forum MySQL
- Protection cellule excel - Guide
- Logiciel sql - Télécharger - Bases de données
- Sentinel protection installer - Télécharger - Antivirus & Antimalwares
10 réponses
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.
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)
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
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
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 .
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'] );
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.
Ok merci :)
quel est la différence entre htmlentities et htmlspecialchars ?
quel est la différence entre htmlentities et htmlspecialchars ?
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.
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
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 ?
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()