Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faille sur un input Select

Sujet résolu
    21 mars 2018 à 10:30:30

    Bonjour,

    J'ai remarqué une faille et j'ai fait quelques recherches mais j'arrive pas à savoir comment bloquer correctement ce phénomène.
    Avec l'inspecteur sur un navigateur on peut modifier la valeur (value="") d'une balise <option> qui se trouve dans une balise <select>.


    Prenons un exemple :

    <select>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
    </select>

    Un utilisateur arrive et modifie le value="3" par value="4" puis envoie le formulaire. Le script non sécurisé va insérer 4 en bdd. Mais du coup j'aurai aimé savoir comment retrouver que c'est la troisième option et que la value était égale à 3 avant la modification de l'utilisateur. 
    Je pourrais très bien faire un script php avec des if ou un switch pour dire que si c'est pas ça, ça ou ça et bien c'est refusé mais il n'y aurai pas un moyen plus optimisé ?


    Peut être un script js qui remet les valeurs par défauts dès que l'on clique sur le bouton submit ?
    Si vous avez d'autres idées je suis preneur.


    Merci d'avance :)

    -
    Edité par MathiasD1 21 mars 2018 à 10:35:37

    • Partager sur Facebook
    • Partager sur Twitter
      21 mars 2018 à 10:35:27

      Bonjour,

      Comme on dit toujours, "on ne doit jamais faire confiance aux données envoyées par l'utilisateur", c'est pour cela que même si tu fais des vérifications côté client tu devras ABSOLUMENT et OBLIGATOIREMENT en faire côté serveur.

      Concrètement, tu devras par exemple parmi toutes les autres vérifications que tu devras faire, vérifier si la valeur que ton script php a reçu est soit égale à 1, 2 ou 3 dans ton cas et si ce n'est pas le cas tu devras renvoyer une erreur à l'utilisateur.

      J'espère t'avoir éclairci, n'hésite pas si tu as d'autres questions. ;)

      Clément

      • Partager sur Facebook
      • Partager sur Twitter
        21 mars 2018 à 10:36:38

        Salut,

        Vérifier la donnée côté serveur est le seul moyen d'éviter une insertion imprévu.

        Tu ne contrôlera jamais ton code côté client.

        L'idée de réinitialiser les valeur en JS peut être contourné en bloquant le JS ...

        -
        Edité par MechaStreisand 21 mars 2018 à 10:37:16

        • Partager sur Facebook
        • Partager sur Twitter
        Toute suggestion de bonne pratique de code dans les langages est la bienvenue :-)
          21 mars 2018 à 10:37:12

          Bonjour,

          ce qu'il faut dans ce cas, c'est interdire les valeurs non prévues, côté serveur. Si tu reçois "4" mais tu attendais "1", "2", ou "3", eh bien tu stoppes le traitement du formulaire à ce niveau, et tu n'insères rien.

          Évitons de rajouter du JS à qui mieux mieux :)

          (edit : grilled, avec exactement les mêmes propos :p )

          -
          Edité par Lamecarlate 21 mars 2018 à 10:37:37

          • Partager sur Facebook
          • Partager sur Twitter

          Pas d'aide concernant le code par MP, le forum est là pour ça :)

            21 mars 2018 à 10:41:40

            Bonjour à tous,

            Merci pour vos éclaircissements. Du coup je vais suivre vos conseil et faire mes vérification côté serveur en PHP. 

            Merci de vos réponses rapides :)
            • Partager sur Facebook
            • Partager sur Twitter

            Faille sur un input Select

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown