Précédent   Forum du club des développeurs et IT Pro > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 27/12/2012, 10h47   #1
Royade
Candidat au titre de Membre du Club
 
Femme
Inscription : avril 2012
Messages : 88
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : avril 2012
Messages : 88
Points : 13
Points : 13
Par défaut jeton de sécurité-token

Bonjour,
J'ai mis en place un systeme de token sur mes formulaire, je genere une clée aléatoire, je l'insere dans une session puis dans un champ caché de mon formulaire, une fois le formulaire envoyé je compare la valeur de la session avec la valeur du champ caché:
ca marche tres bien mais j'ai un petit soucis avec mes formulaires lorsque l'utilisateur appui plusieur fois sur le bouton "envoyer" , le champ caché du formulaire et la session ont alors 2 clées différentes..

quelqu'un a une petite solution?

j'ai rajouté un script qui permet de valider une seule fois le formulaire, mais bon le javascript ca se désactive, si quelqu'un a une petite idée de la manière dont il faut s'y prendre je suis preneur
Royade est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 12h26   #2
Séb.
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 977
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 977
Points : 3 693
Points : 3 693
Citation:
lorsque l'utilisateur appui plusieur fois sur le bouton "envoyer" , le champ caché du formulaire et la session ont alors 2 clées différentes..
Laquelle des deux clefs est modifiée ?
Comment gères-tu tes clefs ?
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 12h42   #3
ascito
Membre chevronné
 
Inscription : juin 2007
Messages : 567
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 567
Points : 703
Points : 703
Tu pourrais juste vérifier que pour la session courante, le token dans la session n'a pas encore été créé, et si c'est le cas ne pas écraser l’ancienne valeur comme tu as l'air de le faire .
__________________
Conception / Dev
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 12h44   #4
Royade
Candidat au titre de Membre du Club
 
Femme
Inscription : avril 2012
Messages : 88
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : avril 2012
Messages : 88
Points : 13
Points : 13
Citation:
Laquelle des deux clefs est modifiée ?
La session prend une autre valeur.

mon code est fait comme ca.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
//on compare la valeur du post avec celle de la session
if( $_POST['$key'] == $_SESSION['key'])
{
// tout est ok on continue le traitement
}
 
//je genere ma clé avant le formulaire:
$key = md5(random_str(20));
$_SESSION['key'] = $key;	
?>
 
//je la met dans le formulaire dans un champ caché
<form action="">
...
<input type= "hidden" name="Secure" value="<?php echo $key; ?>" />
</form>
Royade est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 12h50   #5
Séb.
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 977
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 977
Points : 3 693
Points : 3 693
Code :
if( $_POST['$key'] == $_SESSION['key'])
Normal le $_POST['$key'] ?

Code :
$_SESSION['key'] = $key;
A ne pas faire systématiquement comme dit par ascito.

Code :
<input type= "hidden" name="Secure" value="<?php echo $key; ?>" />
Plus haut le champ s'appelait $key ou key, ici il s'appelle Secure. Traitement intermédiaire ?
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 13h29   #6
Royade
Candidat au titre de Membre du Club
 
Femme
Inscription : avril 2012
Messages : 88
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : avril 2012
Messages : 88
Points : 13
Points : 13
oui dsl probleme de copier coller,
c 'est bien
if($_POST['Secure'] == $_SESSION['key'])

Citation:
Tu pourrais juste vérifier que pour la session courante, le token dans la session n'a pas encore été créé, et si c'est le cas ne pas écraser l’ancienne valeur comme tu as l'air de le faire .
D'accord, oui effectivement le token change a chaque fois que la page est raffraichit, ca donnerait donc quelque chose comme ca?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<?php
if( $_POST['Secure'] == $_SESSION['key'])
{// tout est ok on continue le traitement
}
 
if(empty($_SESSION['key']))
{	
$_SESSION['key'] = md5(random_str(20));;	
}		
?>
//je la met dans le formulaire dans un champ caché
<form action="">
...
<input type= "hidden" name="Secure" value="<?php echo $_SESSION['key']; ?>" />
</form>

faut il donner une limiation dans le temps ? que la session contenant la clé unique sois supprimé au bout d'un certain temps ? ca change quelque chose au niveau de la sécuritée ?

Merci pour vos réponse en tout cas
Royade est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h15.


 
 
 
 
Partenaires

Hébergement Web