Bonjour à tous,

Je souhaite utiliser un jeton de sécurité sur le formulaire de contact d'un site.

Pour cela, ne sachant pas comme le faire j'ai trouvé un bout de codes sur un blog personnel (d'un tiers).

Voilà le code:


function generateToken() {return md5(uniqid(microtime(),true) time());}
function verifyToken($token) {//check if a session is started and a token is transmitted, if not return an error
if(!isset($_SESSION['token'])) {return false;}//check if the form is sent with token in it
if(!isset($_POST['token'])) {return false;}//compare the tokens against each other if they are still the same
if($_SESSION['token']!==$token) {return false;}return true;}
function SessionStart() {if(!session_id()) {@session_start();$_SESSION['tokenID']=generateToken();}}
function SessionStop() {if(isset($_SESSION['tokenID'])) {unset($_SESSION['tokenID']);}if(isset($_SESSION['melChamps'])) {unset($_SESSION['melChamps']);}}



Je ne comprends pas tellement ce code.

Est-il à placer avant le Doctype ?

Par avance, merci.
Modifié par Clement-b (24 Jun 2017 - 09:33)
Bonjour,

Le code que tu nous montres est du PHP.
Il s'agit ici de quatre fonctions.
La première génère une clé de chiffrage.
La seconde vérifie que la clé de chiffrage envoyé par le formulaire est identique à celle enregistré dans ton cookie de session.
La troisième initialise la session et enregistre la clé de chiffrage.
La quatrième termine la session.
Attention, dans le code que tu nous montres, il n'y a aucune ligne qui appelle ces fonctions. A toi de le faire.

Le PHP ne se mélange pas directement avec le html. Ce n'est pas le même langage.
Tu dois utiliser un fichier PHP, des balises d'ouverture et fermeture php. Tu pourras placer ton code html en dehors des balises php.
Je t'invite à lire des tutoriels sur le sujet.

Bonne journée
Modifié par taspeur (24 Jun 2017 - 20:55)
taspeur a écrit :

Attention, dans le code que tu nous montres, il n'y a aucune ligne qui appelle ces fonctions.

Bonjour,

Merci de votre réponse.
Est-ce que ce script les appelle ?:


 function mailCheckToken($tokenID) {
if($tokenID===null||!isset($_SESSION['tokenID'])||!isset($tokenID)||$_SESSION['tokenID']!==$tokenID)
return false;
else
return true;}
Non c'est encore une autre fonction, qui n'en appelle aucune autre.

Il va falloir que vous lisiez des tutoriels sur PHP.
On ne peut pas répondre à toutes vos questions et faire tous vos scripts à votre place.
Cela ne vous aidera pas à progresser.
Modifié par taspeur (24 Jun 2017 - 09:51)
taspeur a écrit :

Cela ne vous aidera pas à progresser.


Tout à fait vrai /)

Voilà le script avec lequel le tutoriel termine:


//Token
if(mailCheckToken($tokenID)===false)
Désolé je me répète...

taspeur a écrit :
Il va falloir que vous lisiez des tutoriels sur PHP.
On ne peut pas répondre à toutes vos questions et faire tous vos scripts à votre place.
Cela ne vous aidera pas à progresser.
Meilleure solution
Rebonjour,

J'ai pu modifier le code à ma manière.

Le voilà:


// On démarre la session
session_start();
// On génère un token unique
function generateToken() {return md5(uniqid(microtime(),true) time());}
// Et on le stocke
$_SESSION['tokenID']=generateToken();

function verifyToken($token) {//check if a session is started and a token is transmitted, if not return an error
if(!isset($_SESSION['token'])) {return false;}//check if the form is sent with token in it
if(!isset($_POST['token'])) {return false;}//compare the tokens against each other if they are still the same
if($_SESSION['token']!==$token) {return false;}return true;}



Cela semble fonctionné (car un token unique est généré après actualisation de la page)

Cette manière de générer un token est-elle sécurisée ?

Par avance, merci.
Clement-b a écrit :
Rebonjour,

J'ai pu modifier le code à ma manière.

Le voilà:


// On démarre la session
session_start();
// On génère un token unique
function generateToken() {return md5(uniqid(microtime(),true) time());}
// Et on le stocke
$_SESSION['tokenID']=generateToken();

function verifyToken($token) {//check if a session is started and a token is transmitted, if not return an error
if(!isset($_SESSION['token'])) {return false;}//check if the form is sent with token in it
if(!isset($_POST['token'])) {return false;}//compare the tokens against each other if they are still the same
if($_SESSION['token']!==$token) {return false;}return true;}



Cela semble fonctionné (car un token unique est généré après actualisation de la page)

Cette manière de générer un token est-elle sécurisée ?

Par avance, merci.


Ce code fonctionne bien sur mon site.


Mais je vais chercher des infos pour l'améliorer.

Merci.