PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 22 → Comment se prémunir des SQL Injection avec la commande SQLEXEC
Comment se prémunir des SQL Injection avec la commande SQLEXEC
Débuté par nico, 19 mai 2017 13:56 - 10 réponses
Posté le 19 mai 2017 - 13:56
Bonjour, pourriez vous m'indiquer comment se prémunir des injections sql quand on utilise la fonction SQLEXEC (contenant un la requete sql, dans laquelle des variables sont remplacées par des criteres saisis par l'utilisateur) sur une base de données autre que HyperFile (Je passe par un lien ODBC pour accéder à ma base de données).

Merci
Posté le 23 mai 2017 - 14:32
Personne n'a d'idée ?

Merci
Posté le 23 mai 2017 - 14:50
Bonjour

c'est ton code, et rien ne t'empêche de vérifier que "les criteres
saisis par l'utilisateur" sont bien ca et uniquement ca, en particulier
en vérifiant qu'ils ne contiennent pas d'ordre SQL AVANT d'exécuter la
requête.

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


Le 5/23/2017 à 6:32 AM, Nico a écrit :
Personne n'a d'idée ?
Merci
Membre enregistré
1 089 messages
Posté le 23 mai 2017 - 15:17
Moi je dirais même que ce doit être le connecteur odbc qui doit préparer la requête.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Posté le 23 mai 2017 - 16:31
Le 23-05-17 à 12:32, Nico a écrit :
Personne n'a d'idée ?
Merci


Si la commande supporte l'encodage UTF8, pourquoi ne pas convertir
toi-même les caractères spéciaux en UTF8, si les paramètres sont entre
des côtes et que les caractères spéciaux des paramètres sont convertis.
Je ne vois pas comment il peut avoir injection.

Bon dév.
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 23 mai 2017 - 20:31
Hi Guys

http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/803-exemplo-como-evitar-sql-inject-proteger-seu-banco/read.awp

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
396 messages
Posté le 23 mai 2017 - 23:51
Coucou,

A verifier, mais je crois que depuis la 20 ou la 21, les protections d injections SQL sont gerer nativement par Windev.

--
Charly CanDo.
Forg en Nouvelle-Zélande ;-) - In üs we trust
Posté le 24 mai 2017 - 09:02
Oui c'est géré automatiquement mais c'est géré dans les
HexecuteRequete(MaReq, ...) en passant MaReq.Param1 = "toto"
MaReq.Param2 = "titi" et avec la requête de donnée décrite ainsi "SELECT
... WHERE ... = {Param1} OR ... = {Param2}". Je me demande même si cette
protection n'est pas limitée qu'au requête de donnée (faîte avec
l'editeur de requête).

Bon dév.

Le 23-05-17 à 21:51, Charly CANDO a écrit :
Coucou,

A verifier, mais je crois que depuis la 20 ou la 21, les protections d
injections SQL sont gerer nativement par Windev.

--
Charly CanDo.
Forg en Nouvelle-Zélande ;-) - In üs we trust
Membre enregistré
1 089 messages
Posté le 24 mai 2017 - 09:59
Maintenant la meilleurs solution qui existe reste encore la procédure stockée dans ce cas.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
474 messages
Popularité : +3 (3 votes)
Posté le 24 mai 2017 - 12:24
Bonjour,

Une astuce donnée au dernier TDF TECH :
sdReq est une Source dede Données
sdRed.ID = 123456
HExécuteRequêteSQL(sdRed,hRequêteDéfaut,"SELECT * FROM Clients WHERE ID = {ID}")


L'astuce est donc d’utiliser la source de données pour initialiser les paramètres

Edit : Oops. je n'avais pas vu que l'info avait été donnée plus haut ....
Message modifié, 24 mai 2017 - 12:27
Posté le 24 mai 2017 - 14:25
Pour ma part, je trouve que ton info va plus loin et qu'il faudrait un
retour sur l'usage de cette nouvelle syntaxe ...

Le 24-05-17 à 10:24, "ÿÿÿÿÿÿÿÿÿ" a écrit :
Bonjour,

Une astuce donnée au dernier TDF TECH :
sdReq est une Source de Données
sdRed.ID = 123456
HExécuteRequêteSQL(sdRed,hRequêteDéfaut,"SELECT * FROM Clients WHERE ID
= {ID}")


L'astuce est donc d’utiliser la source de données pour initialiser les
paramètres

Edit : Oops. je n'avais pas vu que l'info avait été donnée plus haut ....