Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1060 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Procédures Stockées et SQL Injection

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Procédures Stockées et SQL Injection

n°1617912
did-54
Posté le 02-10-2007 à 15:24:41  profilanswer
 

Hello !
 
J'ai entendu dire que l'utilisation de procédures stockées réduisait les risques d'SQL Injection.  
Je n'arrive pas vraiment à me représenter pourquoi  :heink: . Dans tous les cas, mes paramètres (i.e entrées utilisateur) sont envoyés à ma base et utilisés par celle-ci dans une requête...
 
Ou alors c'est au niveau de la procédure que ca se joue ?  :??:

mood
Publicité
Posté le 02-10-2007 à 15:24:41  profilanswer
 

n°1617932
MagicBuzz
Posté le 02-10-2007 à 15:50:12  profilanswer
 

Les PS ne réduisent pas les risques de SQL Injection. Ou du moins, seulement en partie (ce qui se trouve dans la procédure est effectivement blindé), mais pas ce qui se trouve autour.
 
Il faut que tu passes par une requête paramétrée pour être correctement protégé contre le SQL Injection (et ceci ne nécessite pas forcément l'utilisation de PS)

n°1617939
did-54
Posté le 02-10-2007 à 15:52:36  profilanswer
 

MagicBuzz a écrit :

ce qui se trouve dans la procédure est effectivement blindé, mais pas ce qui se trouve autour.


C'est à dire ?
 

n°1617947
MagicBuzz
Posté le 02-10-2007 à 15:54:19  profilanswer
 

ben regarde de la doc sur le sql injection pour voir comment ça marche. tu verras que faire un "exec plop($a)" ne blinde rien du tout si par exemple $a contient :
 
'a');drop table commandes;--


Message édité par MagicBuzz le 02-10-2007 à 15:54:57
n°1617949
did-54
Posté le 02-10-2007 à 15:55:42  profilanswer
 

Donc les proc. Stockées ne protègent pas de l'SQL injection !


Message édité par did-54 le 02-10-2007 à 15:55:53
n°1617956
MagicBuzz
Posté le 02-10-2007 à 16:01:01  profilanswer
 

si
 
car si "plop(:login as varchar)" contient la requête
 
select count(*) from users where login = :login
 
=> quelque soit le paramètre que tu passes, tu ne pourras pas baiser cette requête.
 
par contre rien n'empêche de faire l'injection dans la foulée de l'appel de la procédure. si ton site est bien écrit, tu ne peux pas avoir un comportement frauduleux, mais tu ne protèges pas ta base des attaques.
 
regarde de la doc, c'est trop long à expliquer.
 
en tout cas, les PS à elles-seules ne protègent pas complètement contre le sql injection. seules les requêtes paramétrées offrent une protection complète (et offrent des performances accrues, tout comme les ps)

n°1617959
flo850
moi je
Posté le 02-10-2007 à 16:03:17  profilanswer
 

tu confonds les procedeure stockées et les prepared statement
 
http://maximilian.developpez.com/m [...] tatements/

n°1617966
MagicBuzz
Posté le 02-10-2007 à 16:08:36  profilanswer
 

quand on parle de requête paramétrée, y'a plus de confusion.
 
effectivement, entre ps (abréviation française de "procédure stockée" ) et "ps" (abréviation anglophone de "prepared statement" ) y'a de quoi confusionner :o
 
d'où l'importance d'utiliser la même langue partout quand on parle d'un truc :o
 
si on parle de procédures stockées, alors on parle de requête paramétrée, et si on parle de prepared statement, alors on parle de stored procedure, et y'a plus de confusion possible :o

n°1617973
did-54
Posté le 02-10-2007 à 16:15:28  profilanswer
 

MagicBuzz a écrit :

si
 
car si "plop(:login as varchar)" contient la requête
 
select count(*) from users where login = :login
 
=> quelque soit le paramètre que tu passes, tu ne pourras pas baiser cette requête.
 


parceque si je fous du SQL dans login il ne sera pas interpreté lors de la requete, c'est ca ?

n°1617977
MagicBuzz
Posté le 02-10-2007 à 16:15:57  profilanswer
 
mood
Publicité
Posté le 02-10-2007 à 16:15:57  profilanswer
 

n°1617980
did-54
Posté le 02-10-2007 à 16:22:27  profilanswer
 


Ok je vois, mais alors je saisis pas trop la différence entre stored procedure et prepared statement dans la manière ou le code est executé  :sweat:

n°1617981
MagicBuzz
Posté le 02-10-2007 à 16:25:18  profilanswer
 

:heink:
 
ben y'en a un, c'est une procédure stockée que t'appelle depuis ta requête qui n'est pas paramétrée (donc qui accepte le sql injection), et dans l'autre cas c'est une requête paramétrée (donc qui n'accepte pas le sql injection) qui ne fait pas forcément appel à une procédure stockée :spamafote:

n°1617982
did-54
Posté le 02-10-2007 à 16:31:30  profilanswer
 

ohh, allright.
 
Les dénominations avaient eu raison de moi, mais c'est plus clair maintenant, merci :)
 
En réalité ce que j'appelais procédure stockée était une requête paramétrée, donc forcément :spamafote:

n°1617986
MagicBuzz
Posté le 02-10-2007 à 16:38:44  profilanswer
 

en fait, le terme anglais "prepared statement" porte vraiment à confusion, parcequ'une procédure stockée, une fonction, un trigger ou une vue sont aussi des prepared statement.
 
alors que "requête paramétrée", c'est sans appel : il s'agit d'une requête à laquelle tu passes des paramètres (plutôt que de les noyer dans le texte de la requête)

n°1618096
casimimir
Posté le 02-10-2007 à 19:09:43  profilanswer
 

mmmm ceci dit en java un PreparedStatement est bien une requete compilée a laquelle on peut donner des valeurs aux paramètres.

n°1618102
MagicBuzz
Posté le 02-10-2007 à 19:52:46  profilanswer
 

J'ai pas dis que c'était pas le bon terme, j'ai dit que le terme portait à confusion :o


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Procédures Stockées et SQL Injection

 

Sujets relatifs
[SQL] créatiçon d'une vue avec un minclé primaire en SQL
Incrémenter une base SQL avec un lien[SQL] Optimisation de requête "regroupement X-en-1" (tri ?)
Req SQL trop dure pour moiPL/SQL : Passage en paramère
[SQL] Requête UPDATE complexeSql Developper Erreur non detecté
Requêtes SQL: fusion de lignes[RESOLU] - Probleme requete SQL - RETURN
Plus de sujets relatifs à : Procédures Stockées et SQL Injection


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR