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
Partager