Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2012, 17h53   #1
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Par défaut Injection sql php

Bonjour

Je subis actuellement des injection sql.

Est ce que quelqu'un pourrai contact avec moi pour voir d'ou sa provient ?

Merci
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 18h14   #2
Membre du Club
 
Homme
Webmaster
Inscription : mars 2011
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : mars 2011
Messages : 36
Points : 45
Points : 45
Comment vous savez que vous subissez des attaques par Injection SQL ?
et dans quel page de votre site sont produites ces attaques ?

car il faut savoir quel page pour corriger cette page il faut contrôler tout ce qui passe par vos variable avec se code :

Code :
$variable=mysql_real_escape_string(htmlspecialchars($_POST['nom']));
c'est en ajoutant mysql_real_escape_string et htmlspecialchars dans la variable ou vous subissez vos attaque pour vous protéger.
Devildz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 18h33   #3
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 778
Points : 35 778
En plus des conseils de Devildz, il faut bien garder en tête le principe fondamental : Never trust user input !
Et attention, ce qu'on appelle user input, ce ne sont pas uniquement les valeurs récupérées en GET ou en POST. Un cookie, une variable de session, ...
Toute valeur qui n'a pas été définie dans le code qui l'utilise doit être vérifiée !

Ensuite, tant que cela est possible, il faut définir un format strict pour le genre de données attendues.
Si on attend un nombre, on ne doit pas autoriser d'autres caractères que des chiffres, idem pour les chaines qui doivent être filtrées au maximum.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/02/2012, 08h14   #4
Membre expérimenté
 
Avatar de redoran
 
Homme
Developpeur- Amateur
Inscription : juin 2010
Messages : 990
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 40
Localisation : Algérie

Informations professionnelles :
Activité : Developpeur- Amateur
Secteur : Santé

Informations forums :
Inscription : juin 2010
Messages : 990
Points : 582
Points : 582
Envoyer un message via Skype™ à redoran
Salam ; si sa peut t'aidé je vous propose ce lien http://www.php.net/manual/fr/securit...-injection.php
SQL Inject-Me est Extension Firefox utilisé pour tester les vulnérabilités d'injection SQL.
https://addons.mozilla.org/fr/firefo...sql-inject-me/
bonne utilisation Red
redoran est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2012, 18h59   #5
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Quel est l'équivalend en odbc pour sa :
Code :
1
2
 
$variable=mysql_real_escape_string(htmlspecialchars($_POST['nom']));
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2012, 19h12   #6
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
Bonjour,

quel SGBD est utilisé pour gérer le site ?
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2012, 19h50   #7
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Comment on connait son SGBD ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2012, 19h52   #8
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 818
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 818
Points : 1 540
Points : 1 540
A ce que je vois dans la DOC les fonctions ODBC n'échappent rien d'autre que les apostrophes simple.
Tu peux cependant passer par l'interface PDO qui elle échappe correctement les données (PDO::quote() ou bien avec les requêtes préparées).
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2012, 20h39   #9
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Moi je fais sa :
Code :
1
2
3
4
5
6
 
 
	function register($pseudo, $password, $email) {		
		$pseudo = addslashes(htmlspecialchars($pseudo, ENT_QUOTES));
		$password = addslashes(htmlspecialchars($password, ENT_QUOTES));
		$email = addslashes(htmlspecialchars($email, ENT_QUOTES));
Sa me semble plus que suffisant non ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2012, 21h25   #10
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par thebarbarius Voir le message
Comment on connait son SGBD ?
Tu lances une requête du genre :
mysql :
Code sql :
SHOW VARIABLES LIKE "%version%"
pgsql :
sqlserver :
Code sql :
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
tu exécutes ces bouts de codes et si ça marche tu fais un var_dump() sur le retour de la requête.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 08h59   #11
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
Envoyé par thebarbarius Voir le message
Moi je fais sa :
Code :
1
2
3
4
5
6
 
 
	function register($pseudo, $password, $email) {		
		$pseudo = addslashes(htmlspecialchars($pseudo, ENT_QUOTES));
		$password = addslashes(htmlspecialchars($password, ENT_QUOTES));
		$email = addslashes(htmlspecialchars($email, ENT_QUOTES));
Sa me semble plus que suffisant non ?
Absolument pas.

1- htmlspecialchars n'a aucun effet sur les injection sql , il est en général conseillé de l'appliqué à l'affichage et non à l'insertion.

2- addslashes n'echappe "que" ' " \ et NUL alors que les fonction spécifique au SGBD en on en général plus. Dans le cas ou il n'existe pas de fonction spécifique il est vivement conseillé d'utiliser les requêtes préparée en plus d'un filtrage/validation des données stricte.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 09h43   #12
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
Voici une discussion qui a déjà abordé cette problématique : ici
Bonne lecture
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 09h46   #13
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 818
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 818
Points : 1 540
Points : 1 540
Citation:
Envoyé par grunk Voir le message
2- addslashes n'echappe "que" ' " \ et NUL alors que les fonction spécifique au SGBD en on en général plus. Dans le cas ou il n'existe pas de fonction spécifique il est vivement conseillé d'utiliser les requêtes préparée en plus d'un filtrage/validation des données stricte.
Les requêtes préparées d'ODBC n'échappent que les apostrophes d'après la doc.
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 10h04   #14
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
Envoyé par transgohan Voir le message
Les requêtes préparées d'ODBC n'échappent que les apostrophes d'après la doc.
Une requête préparée ça n'échappe pas, ca compile juste une requête à laquelle on passe ensuite des arguments.
La requête étant compilée , tu peux lui passer ce que tu veux comme argument , il n'auront aucun effet.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/02/2012, 11h52   #15
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 818
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 818
Points : 1 540
Points : 1 540
Exact, j'étais pas très bien réveillé.
Je rajouterai cependant ce n'est pas pour autant qu'il faut toujours utiliser des requêtes préparées. C'est utile uniquement dans les cas où on exécute la requête plusieurs fois avec plusieurs injections différentes de données. Dans les autres cas c'est utiliser une bombe nucléaire pour tuer une mouche.
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 14h05   #16
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
Envoyé par transgohan Voir le message
C'est utile uniquement dans les cas où on exécute la requête plusieurs fois avec plusieurs injections différentes de données. Dans les autres cas c'est utiliser une bombe nucléaire pour tuer une mouche.
Les SGBD on à peut près tous des caches des plan d'execution de leur requêtes. Donc concrètement tu prépares une fois une requête et la prochaine fois si elle est dans le cache la préparation sera récupérée du cache. Du coup pour des requêtes un peu complexes c'est même plus rapide qu'une query normale.
Donc tout bénéf.

Pour les requêtes simple le gain de tranquillité vaut bien les quelques ms perdues
grunk est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/02/2012, 05h37   #17
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
sinon comme je disais je tourne sous ODBC et non mysql ou mysqli...

Donc quel est l'equivalent de sa en odbc :
Code :
1
2
 
$variable=mysql_real_escape_string(htmlspecialchars($_POST['nom']));
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2012, 09h30   #18
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Y'a pas en ODBC puisque ça permet de se connecter à différent SGBD. La seule solution, c'est les requêtes préparées + un filtrage /validation des entrées utilisateurs.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h23.


 
 
 
 
Partenaires

Hébergement Web