| |
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é 2 566 messages Popularité : +222 (260 votes) |
|
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é 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 23 mai 2017 - 20:31 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 948 messages Popularité : +30 (92 votes) |
|
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é 2 566 messages Popularité : +222 (260 votes) |
|
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é 1 623 messages Popularité : +100 (114 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 .... |
| |
| |
| | | |
|
| | |