IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Les champs cachés sont-ils sécurisés ?


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut Les champs cachés sont-ils sécurisés ?
    Bonsoir,

    Je suis en train de créer une page contenant de nombreuses images, en fonction de l'image sur laquelle on clique on arrive sur une page où se trouve un champ de saisie et un bouton et ces deux éléments se trouvent dans un formulaire. Le problème est que j'ai besoin de joindre des informations lors de l'envoie de ce formulaire et comme les images ne vont jamais changer, je me suis dis que la meilleure solution est d'utiliser des champs cachés dans le formulaire où on arrive après avoir cliqué sur une image.
    Par exemple, je clique sur l'image d'un arbre, j'arrive sur une page avec un champ de saisie où je marque "palmier" puis je clique sur le bouton qui provoque l'envoie du formulaire. Afin de ne pas devoir utiliser une base de données afin de récupérer les informations supplémentaires j'ai pensé à des champs cachés, par exemple un champ "numero" dont la valeur serait 17.

    J'ai décidé d'écrire ce message car je ne sais vraiment pas si c'est sécurisé. Le numéro de la question n'est pas secret, pouvoir le lire en voyant le code source de la page n'est pas grave, la seule chose qu'il ne faut absolument pas pouvoir faire est de modifier ce nombre. Par exemple l'utilisateur marque "palmier", voit que c'est la question 17 et avant d'envoyer le formulaire l'utilisateur modifie en 18.

    Je sais que cela ne peut pas modifier le code source de la page hébergée sur le serveur mais si cette façon de faire permettrait de faire passer une question comme étant une autre (en modifiant son numéro dans le champ caché) cela me poserait beaucoup de problèmes.

    Merci de bien vouloir éclairer ma lanterne

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Ton explication n'est pas claire, et souvent c'est signe que ton approche elle-même n'est pas au point.

    Dans tous les cas, c'est extrêmement facile de modifier la valeur d'un champ d'un formulaire, caché ou pas. L'internaute lambda ne saura pas le faire, mais quelqu'un d'assez débrouillard le pourra facilement.

    Et si tu expliquais plutôt ton problème d'abord? Si ça se trouve, il y a peut-être d'autres solutions plus simples.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ il faut éviter le <form method="get" ...>, car dans ce cas, les paramètres sont passés via l'URL, et donc TRÈS facilement modifiables.

    2/ Par conséquent, privilégier <form method="post" ...>.

    3/ il est aussi possible d'enregistrer des données dans des variables de $_SESSION.
    Elles n'ont pas besoin d'être "transmises".

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut
    Bonjour,

    Je vais laisser tomber l'idée du champ caché, c'est bien trop risqué.

    Concernant le formulaire, j'ai toujours fais des POST mais j'ignorais que les GET sont tellement facile à modifier, je ferais en sorte de ne jamais en utiliser.

    Concernant les sessions, il est vrai que c'est un moyen très pratique de conserver des données sans utiliser de base de données mais j'ai entendu dire qu'il est possible de voler des sessions. Je n'ai pas très bien compris le principe mais je ne passe jamais d'identifiant de session dans l'url donc je pense que le risque est minime voir nul mais comme toujours, c'est pas car 99,99 % des visiteurs ne savent pas faire d'avantage que voir le contenu visible du site qu'il n'y aura pas un jour une personne qui aura les connaissances et cherchera à trafiquer des choses.

    En faite, même si c'est plus long et plus compliqué je pense que le plus simple serait d'utiliser une base de données. Si une personne clique sur une image, elle arrive sur une page, par exemple reponse.php?numero=17 et sur cette page elle marque la réponse et envoie avec le bouton. Le numéro est alors récupéré et la réponse recherchée dans la base de données et comparée avec celle inscrite par l'utilisateur. La seule chose pouvant être facilement modifiable est le numéro de la question mais tant que je vérifie après la récupération du numéro que c'est bien un nombre, il ne devrait pas y avoir de problème de mon côté. La seule chose possible c'est que la réponse ne correspond pas à la question si la personne modifie l'url manuellement. La base de données permettrait également de créer une interface graphique permettant de gérer les questions et les réponses sans modifier le code.

    En réalité, c'est plus compliqué que des images et des réponses mais le principe est exactement le même, j'ai besoin de mettre des images sur lesquelles on peut cliquer et ensuite l'utilisateur arrive sur une page où il peut effectuer des actions en fonction de l'image sur laquelle il a cliqué. A chaque image sont associées des informations et les champs cachés dans un formulaire étaient (pour moi) un excellent moyen de transmettre ces informations d'une page à une autre mais visiblement je ferais mieux de ne pas en utiliser.

    Merci pour ces informations

  5. #5
    Invité
    Invité(e)
    Par défaut
    La base de données est une solution.

    Il est aussi possible de stocker les informations dans un "simple" fichier.
    ex. qcm.txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1;ceci est la question 1 ?;et voilà la réponse 1
    2;ceci est la question 2 ?;et voilà la réponse 2
    3;ceci est la question 3 ?;et voilà la réponse 3
    ";" sert ici de séparateur. On peut utiliser autre chose si on veut (une tabulation, par exemple)

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    même si c'est plus long et plus compliqué je pense que le plus simple
    Le plus simple c'est la méthode longue et compliquée ?

    Une session PHP n'est pas une alternative a une base de données : une session PHP sert à conserver des données uniquement durant la navigation d'un utilisateur.
    Pour stocker les réponses d'un questionnaire c'est bien une base de données qu'il faut.
    Pour empecher l'utilisateur de modifier le numéro de la question, une session PHP peut servir.

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut
    Ah oui, effectivement je peux comparer le numéro de la question stocké en session avec celui contenu dans l'url.

    Je m'étais mal exprimé, la méthode longue n'est pas forcément la plus facile mais je voulais dire que c'est la plus pratique car je n'aurais pas à me connecter au ftp et à modifier un fichier afin de modifier les questions.

    Je préfère y passer un peu plus de temps et qu'ensuite ce soit plus facile à gérer car comme nous sommes plusieurs, une interface de gestion des questions est bien plus pratique que les champs cachés initialement prévus.

    @jreaux62 :
    Je n'avais pas pensé à cette façon de faire, c'est également facile à modifier par les admins et impossible à trafiquer par l'utilisateur puisque le fichier se trouverait sur le serveur.

    Merci à vous, je vais encore une fois y réfléchir avant de me lancer là dessus

    Bonne journée

  8. #8
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    1/ il faut éviter le <form method="get" ...>, car dans ce cas, les paramètres sont passés via l'URL, et donc TRÈS facilement modifiables.

    2/ Par conséquent, privilégier <form method="post" ...>
    .

    A noter que bien que cela soit plus compliqué à modifier pour un utilisateur novice, ce sera toujours très facile pour un utilisateur averti (s'y connaissant un tout petit peu en programmation web).

    Conclusion : ne jamais faire confiance aux variables reçues par formulaire, toujours vérifier qu'elles correspondent à ce que l'on attend.

  9. #9
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Par exemple, je clique sur l'image d'un arbre, j'arrive sur une page avec un champ de saisie où je marque "palmier" puis je clique sur le bouton qui provoque l'envoie du formulaire. Afin de ne pas devoir utiliser une base de données afin de récupérer les informations supplémentaires j'ai pensé à des champs cachés, par exemple un champ "numero" dont la valeur serait 17.
    Pas clair du tout.
    tu peux recommencer ?
    Je clique sur un arbre, puis je saisis "palmier", que doit-il se passer à l'envoi ?
    Savoir que moi, connecté en tant que Dendrite, j'ai saisi "palmier" pour cet arbre ? Un peu comme un test ?
    Et tu vas poser ces tests à des tas de gens ? Et tu dois stocker les réponses ?
    Ou bien quoi ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les tableaux associatifs sont ils triés?
    Par wodel dans le forum Langage
    Réponses: 4
    Dernier message: 12/02/2008, 00h16
  2. Les composants graphiques sont-ils des controles ActiveX
    Par Lucas Panny dans le forum C++Builder
    Réponses: 0
    Dernier message: 02/11/2007, 05h55
  3. Pourquoi les mails ne sont ils pas envoyés?
    Par Sunsawe dans le forum Développement
    Réponses: 3
    Dernier message: 12/04/2007, 23h49
  4. Réponses: 3
    Dernier message: 08/03/2007, 10h53
  5. Les drivers ODBC sont-ils nécessairement payants ?
    Par Draekonyss dans le forum 4D
    Réponses: 5
    Dernier message: 20/04/2006, 18h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo