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 :

securiser un formulaire


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 110
    Points : 49
    Points
    49
    Par défaut securiser un formulaire
    Bonjour,

    J'ai quelques petits soucis et interrogations en se qui concerne la sécurisation d'un formulaire,j'espère qu'on pourra m'éguiller.

    Dans le traitement de mon formulaire tout d'abord je vérifie que le formulaire à été envoyé, puis je vérifie si tous les champs sont présents et ensuite qu'aucun champ n' à été rajouté.Je crée un champ vide et je verifie quand le formulaire est posté que le champ est toujours vide. J'utilise également le token, jeton de sécurité contre les failles CSRF en créant une chaîne aléatoire que je crypte avec la fonction md5, que je copie dans un champ caché de mon formulaire et dans une variable de session, une fois le formulaire envoyé, je vérifie si la variable qui se trouvait dans le formulaire est bien égale a celle de la session.

    Première interrogation, j'ai pu lire qu'il fallait créer une autre variable de session avec un timestamp correspondant au moment de la création du token, pour donner une durée limite a l'envoi du formulaire, est-ce vraiment indispensable ? Le temps que l'utilisateur lise la page, si il veut mettre un commentaire tout en bas de celle ci, la session token sera déjà expiré, il faudra donc qu'il raffraichisse la page se qui n'est pas forcement très agréable (même si c'est moi qui fixe la durée du token, si je décide de mettre 15-20 mins autant ne rien mettre non ?)

    Ensuite j'utilise $_SERVER['HTTP_REFERER'] pour savoir si le formulaire à bien été posté de la bonne page, sauf qu'en bas de ma page ou se trouve les commentaires des internautes j'ai une pagination donc le lien absolu n'est pas tout le temps le même.
    exemple: Je me trouve sur mapage ça sera un lien comme :
    "http://www.monsite.fr/mapage.php"
    mais si l 'utilisateur est sur la page 2 des commentaires ça sera:
    "http://www.monsite.fr/mapage.php?page2"
    ou encore si il passe les pages des commentaires normalement il y aura une ancre pour qu'il descende directement au niveau des commentaires:
    "http://www.monsite.fr/mapage.php?page2#commentaire"

    En dessous chaque page de commentaire il y a le formulaire pour qu'il puisse poster qu il soit sur la page de commentaire 1 comme la 5, sauf que le referer n'est jamais le même.
    Dois-je adapter $_SERVER['HTTP_REFERER'] avec les variables globales $_SERVER['PHP_SELF'] et $_SERVER['QUERY_STRING'] ? sachant que $_SERVER['HTTP_REFERER'] est facilement modifiable donc peu fiable, mais ça serait toujours une sécuritée en plus! ou mettre un lien en dessous chaque page de commentaires pour que les utilisateurs retourne a la page ""http://www.monsite.fr/mapage.php" comme ça le referer sera toujours le même.

    Les tokens ne peuvent pas servir en même temps au même travail que ferait $_SERVER['HTTP_REFERER'] ? Si on post le formulaire d'une autre page, la valeur se trouvant dans le champs caché sera pas égale a celle de la session , mais on peut toujours raffraichir la page du site, prendre la valeur se trouvant dans "value" en faisant code source de la page, et la coller dans un autre formulaire identique se trouvant sur une autre page, et la tout est ok, on reussit a poster le formulaire, la variable de session est bien égale a celle du formulaire!Il y a t-il pas une solution pour utiliser les tokens en plus de les utiliser contre les failles CSRF, afin d'être sur que le formulaire soit posté de la bonne page

    Dernière interrogation:
    Avec mon dossier .htaccess a partir d'une page comme :
    "http://www.monsite.fr/mapage.php?page2#commentaire"
    je pourrais en faire une page comme:
    "http://www.monsite.fr/mapage.html" ?? que je sois sur la page2 des commentaires ou la page 5 j'aurais la même url ? le faite de faire ça si jamais c'est possible ne changera rien a se qu'il y a derrière, le fonctionnement des globale $_GET ou des ancres seront toujours identique ?

    Dois je mettre en place d'autre sécuritée ?

    Je sais pas si j'ai été bien clair
    Si quelqu'un a un semblant de réponse a m'apporter je suis preneur!

    Merci d'avance

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Tu ne dois pas te servir de $_SERVER['HTTP_REFERER']. Souvent, dans la majorité des cas, cette valeur n'est pas renseignée. Cela me semble hasardeux de vouloir se servir de cette variable pour tenter de sécuriser quoique ce soit puisqu'elle n'est ni fiable ni toujours existante...

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 110
    Points : 49
    Points
    49
    Par défaut
    Tu ne dois pas te servir de $_SERVER['HTTP_REFERER']. Souvent, dans la majorité des cas, cette valeur n'est pas renseignée. Cela me semble hasardeux de vouloir se servir de cette variable pour tenter de sécuriser quoique ce soit puisqu'elle n'est ni fiable ni toujours existante...
    Merci pour ta réponse.
    Biensur, c'est juste un plus, mais comment empêcher quelqu'un de poster ailleurs que sur ma la page prévu a cette effet autre que grâce à la variable globale $_SERVER['HTTP_REFERER'] ?

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par Royade Voir le message
    Merci pour ta réponse.
    Biensur, c'est juste un plus, mais comment empêcher quelqu'un de poster ailleurs que sur ma la page prévu a cette effet autre que grâce à la variable globale $_SERVER['HTTP_REFERER'] ?
    C'est pas un plus vu qu'on ne peux pas l'utiliser.

    On peut rendre difficile le fait de poster en dehors de la page avec un token mais on ne peut pas l'interdire à 100% (par exemple curl peut enregistrer des variables de sessions). Les token servent originellement à se protéger des attaques CRSF, c'est à dire pour se protéger des falsifications de requêtes inter-site, mais pas pour empêcher une requête depuis un navigateur ou depuis un système qui reproduit les requêtes des navigateurs.
    Avec une faille CRSF tu peux éventuellement faire exécuter des requêtes indésirables pour un visiteur externe qui n'a pas demandé cette requête, ce qui est du piratage. Mais en postant simplement depuis ailleurs que sur la page habituellement requise, on ne peut faire que ce que l'on serait autorisé à faire si l'on était sur la bonne page, ce qui n'est pas du piratage mais un moyen différent d'obtenir un comportement autorisé.
    C'est donc à ton application de gérer ce cas de figure. Si cela te pose vraiment un problème (mais lequel ?) tu peux par exemple mettre en place un chapta ce qui oblige l'utilisateur à rentrer une réponse visible uniquement depuis le site. Mais si tu veux qu'aucune intervention ne soit nécessaire de la part de l'utilisateur tu ne peux rien faire de garanti à 100% et qui l'empêche de poster depuis ailleurs.

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 110
    Points : 49
    Points
    49
    Par défaut
    d accord merci bien pour ta réponse.

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

Discussions similaires

  1. [Sécurité] Sécurisation de formulaire
    Par yaka2 dans le forum Langage
    Réponses: 5
    Dernier message: 22/02/2006, 11h30
  2. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 15h52
  3. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59
  4. [VB6][Formulaire]Appliquer un Scrollbar a une Form
    Par Boil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/11/2002, 03h51
  5. [CR] Tranfert de formulaire a travers une page HTMl
    Par LIEU dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 12/09/2002, 08h37

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