Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 10/08/2014 02:48:06
- Jiff
- Membre
Empêcher les injections SQL
Salut forumers,
.
Est-ce qu'en utilisant un PREPARE appelé à partir d'une PROCÉDURE STOCKÉE de la façon suivante, ma DB ne risque rien ?
.
PREPARE:
PREPARE fooplan (int, text, bool, numeric) AS
INSERT INTO foo VALUES($1, $2, $3, $4);
PROCÉDURE STOCKÉE:
CREATE FUNCTION machtiteps(INTEGER, TEXT, BOOL, NUMERIC, INTEGER, VARCHAR(48)) AS $$
…
EXECUTE fooplan($1, $2, $3, $4);
…
Ou bien, suis-je _obligé_ d'utiliser les différents "quote_…()" sur $1, $2, $3 & $4 avant l'EXECUTE ?
.
Ah, merdouille, yauntrukaukeljavèplupensé
Je me réponds sur la question ci-dessus: elle est sans objet, puisque les utilisateurs n'ont aucun accès direct aux schémas ni aux tables, rien que des droits d'exécution, ou pas, sur des procédures (toutes SECURITY DEFINER).
J'en déduis donc qu'il _faut_ que j'utilise quote_…() sur tous les parms IN de mes procédures, puisque je n'aurais pas de requêtes préparées.
.
Reste la 2nde question: est-ce que cela protège également des injections n'utilisant pas les quotes, telles que décrites dans http://www.blackhatlibrary.net/SQL_inje … y_measures (par exemple; celle utilisant des "select chr(NN)||chr(XX)…) ?
Dernière modification par Jiff (10/08/2014 04:03:57)
Hors ligne
#2 10/08/2014 10:18:02
- gleu
- Administrateur
Re : Empêcher les injections SQL
suis-je _obligé_ d'utiliser les différents "quote_…()" sur $1, $2, $3 & $4 avant l'EXECUTE ?
Non, il ne faut surtout pas les utiliser, les requêtes préparées sont déjà protégées, même en dehors de procédure stockées.
est-ce que cela protège également des injections n'utilisant pas les quotes, telles que décrites dans http://www.blackhatlibrary.net/SQL_inje … y_measures
À ma connaissance, oui.
Guillaume.
Hors ligne
Pages : 1