1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

TUTO Se protéger du piratage par Injection SQL, dans une requête textuelle

Discussion dans 'Base de donnés & HFSQL' créé par haffar, Juin 5, 2018.

  1. haffar

    haffar Member

    Inscrit:
    Juin 5, 2018
    Messages:
    30
    J'aime reçus:
    63
    Pour la définition de l'INJECTION SQL, je vous renvoie à la documentation de Wikipédia :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!





    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 :

    [​IMG]


    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 :

    [​IMG]

    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.
     
    Tags:
    bousaid, BEKHITI2000 et Kelard aiment ça.

Partager cette page

Chargement...