Erreur SQL exploitable ?

Fermé
imadhi Messages postés 95 Date d'inscription dimanche 12 avril 2009 Statut Membre Dernière intervention 18 juin 2010 - Modifié par jipicy le 15/05/2010 à 20:29
dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 - 17 mai 2010 à 20:28
Bonjour,
Voila, comme vous pouvez le voir c'est asser urgent donc je vais droit au but:
j'ai eu une erreur SQL quand jai remplacer le 2 news.php?page=2 la, par un quote ' ... Voici l'erreur :

Erreur SQL !
SELECT * FROM News ORDER BY idNew DESC LIMIT -5, 5
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-5, 5' at line 1

Est-ce une erreur grave ? on pourra utiliser cette faille pour faire une attaque sql injection ? si oui comment y remedier !! merci infiniment !

PS: Apres quelque longue recherche je crois que cette erreur n'est pas exploitable mais bon je laisse les professionelles parler !!


1 réponse

dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
Modifié par dam75 le 17/05/2010 à 20:28
Bonjour,

C'est un peu délicat avec si peu d'éléments de savoir si ton application est sûre, mais le fait de se protéger d'une injection SQL n'a rien à voir avec cette erreur :)
(je veux dire que tu peux avoir une application avec un gros trou de sécurité sans pour autant avoir une erreur SQL !)
Ca n'est pas une raison pour la laisser passer !

Le 1er chiffre de ton limit ne devrait JAMAIS être négatif, tu dois avoir une erreur dans le code qui génère la requête en fonction de la page ...

Voici un extrait de la doc officielle :
(http://dev.mysql.com/doc/refman/5.0/fr/select.html)

La clause LIMIT peut être utilisée pour limiter le nombre d'enregistrements retournés par la commande SELECT. LIMIT accepte un ou deux arguments numériques. Ces arguments doivent être des entiers constants.

Avec un argument, la valeur spécifie le nombre de lignes à retourner depuis le début du jeu de résultat. Si deux arguments sont donnés, le premier indique le décalage du premier enregistrement à retourner, le second donne le nombre maximum d'enregistrement à retourner. Le décalage du premier enregistrement est 0 (pas 1) :

mysql> SELECT * FROM table LIMIT 5,10; # Retourne les enregistrements 6 à 15

Si un seul argument est donné, il indique le nombre maximum d'enregistrements à retourner :

mysql> SELECT * FROM table LIMIT 5; # Retourne les 5 premiers enregistrements

Autrement dit, LIMIT n est équivalent à LIMIT 0,n.
A+++
0
Salut,
La parenthèse fermante a été prise dans le lien. Pour peu que le lecteur soit un peu "la tête dans le guidon" il concluera à un lien mort
0
dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
17 mai 2010 à 20:28
corrigé, merci :)
0