Pour la définition de l’INJECTION SQL, je vous renvoie à la documentation de Wikipédia :
https://fr.wikipedia.org/wiki/Injection_SQL
Le risque principal est qu’en saisissant certains caractères dans un champ de saisie, on se retrouve à pouvoir afficher ou manipuler plus de données que l’on devrait, et contourner ainsi les intentions initiales de la requête.
Imaginez par exemple le risque d’un client malicieux qui pourrait accéder aux informations de tous les clients de la base, plutôt qu’uniquement consulter les siennes. Ou une suppression qui aurait dû se produire sur un seul compte, et qui les supprime tous.
Voici la syntaxe qu’on nous propose souvent dans des exemples Windev/Webdev, mais aussi dans la documentation officielle en ligne de PCSOFT, et qui peut se révéler problématique :
Car si le client saisit dans SAI_E_Mail la valeur spéciale : ‘ 1=1 –
le SQL renvoie tous les clients, et non pas uniquement celui censé être autorisé.
Pour se prémunir de ce cas, il faut passer par la syntaxe suivante :
En effet, dans ce cas précis, la requête est pré-traitée par HFSQL contre l’injection SQL.
Observation : Bien que la source de donnée sdMaRequête ignore l’existence de {paramEmail} et {paramMotDePasse} avant l’exécution du HExécuteRequeteSQL(), on peut tout de même les renseigner de cette façon. Il n’y aura donc pas de complétion automatique du code proposée par Windev/Webdev, vérifiez donc bien la syntaxe des paramètres que vous définissez.