Token invalide si HTTP_REFERER non défini sur serveur

12 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

J'ai installé peel 6.0 (shopping avec premium) sur mon pc sous WAMP (url rewrite, php5.3.1) et toute l'installation c'est bien déroulée...

Par contre lorsque je modifie des données dans l'administration, par exemple le nom du site, j'ai tout le temps l'erreur :

"Token invalide : traitement déjà réalisé ou Referer HTTP non renseigné", et les données ne sont pas modifiées.

Comment puis-je corriger ce problème, avez-vous une idée de l'origine ?

Il faut savoir que mon wamp est sous : localhost:3000 et non sur le port 80.

Merci d'avance,

Denis

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Dans l'administration, les actions de formulaires sont protégées d'attaques XSS en vérifiant des tokens et notamment les HTTP_REFERER.

Si votre navigateur n'a pas de plugin particulier masquant ce HTTP_REFERER, il n'y a aucun soucis - sinon, vous devez changer vos préférences pour laisser renseigné le HTTP_REFERER.

Pour savoir si il est bien renseigné, vous pouvez faire un var_dump($_SERVER['HTTP_REFERER']) dans une page PHP.

Le fait que vous utilisiez le port 3000 et non 80 n'est pas censé avoir d'impact car on utilise HTTP_HOST dans le code qui contient la mention :3000 dans les vérifications d'URL de referer.

PS : Un autre problème possible des tokens pourrait venir du bon fonctionnement des cookies et donc des sessions, mais comme vous êtes dans l'administration c'est que les sessions marchent bien.

Gilles

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Merci pour votre réponse. C'est assez bizarre mon firefox avait dans sa config : Network.http.sendRefererHeader à 0... c'est à dire Referer désactivé par defaut.

En tout cas je l'ai réactivé, cela marche maintenant.

Merci bien,

Denis

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Même problème suite à une mise à niveau de la version 6.2 vers 6.3. J'ai fait un var_dump et voici la réponse :

Notice: Undefined index: HTTP_REFERER in /homez.317/.../var_dump.php on line 2

NULL

Je suppose que HTTP_REFERER n'est pas renseigné (alors que cela fonctionnait avec la 6.2).

Mais dans la config de firefox, la valeur est 2 !

Et j'ai le même problème avec I.E.

Je ne comprends pas trop.

Merci de votre aide.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

bonjour a tous je ne sais pas réellement le problème mais j'ai réussi juste en changent le fichier configuration.inc.php de la version 6.2

alors vous pouvez tester, renommer le fichier configuration.inc.php sur votre version 6.3 et copiez le fichier configuration.inc.php de la version 6.2 et dites moi ce que vous avez pour moi cela a marché sur google chrome, internet explorer et mozilla que avant de changer le fichier cela bloqué sur les trois navigateurs

j'attend vos réponses

merci

ps: ça été valide pour la mise a jour et aussi pour une nouvelle installation

par conte pour la mise a jour 6.2 vers 6.3 la procédure de Simon me donne beaucoup d'erreurs. du type erreur de ligne ou déjà existantes voila ???? du coup je ne sais pas si tout est importé proprement

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Pour ceux qui utilisent des hébergements avec HTTP_REFERER non défini, ce qui est rare , et qui ont donc l'erreur :

Notice: Undefined index: HTTP_REFERER

voici une version de la fonction de vérification de token qui règle votre soucis :

remplacez la fonction déjà existante verify_token ligne 108 de lib/fonctions/fonctions.php


/**
* Vérification de la validité d'un token
* Par défaut, un token est valide 1h, et utilisable 1 seule fois.
* Les tokens rajoutent de la sécurité face aux CSRF, et par ailleurs empêchent l'utilisateur de valider N fois par erreur un même formulaire
* Inconvénient si on affecte un nom de token par formulaire : si l'utilisateur ouvre un même formulaire dans plusieurs onglets, seul le formulaire ouvert en dernier est utilisable. Cela évite certains comportement indésirables de spammeurs.
* => si on veut éviter cela, il faut générer un nom lors de chaque création de formulaire.
*
* @param string $name
* @param mixed $delay_in_minutes Validity in minutes
* @param mixed $check_referer_if_set_by_server
* @param mixed $cancel_token
* @return
*/
function verify_token($name = 'general', $delay_in_minutes = 60, $check_referer_if_set_by_server = true, $cancel_token = true)
{
if (!empty($_POST['token'])) {
$user_token = $_POST['token'];
} elseif (!empty($_GET['token'])) {
$user_token = $_GET['token'];
}
$result = false;
if (isset($_SESSION['token_' . $name]) && isset($_SESSION['token_time_' . $name]) && !empty($user_token)) {
if ($_SESSION['token_' . $name] == $user_token && $_SESSION['token_time_' . $name] + $delay_in_minutes * 60 >= time()) {
if (!$check_referer_if_set_by_server || !isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER']==$_SESSION['token_referer_' . $name]) {
$result = true;
}
}
}
if ($cancel_token) {
unset($_SESSION['token_' . $name], $_SESSION['token_time_' . $name], $_SESSION['token_referer_' . $name]);
}
return $result;
}
[/CODE]

Gilles

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour

Je rencontre egalement ce probleme sur la page membre.php, lorsque je m'identifie j'ai cette erreur

Je suis sous la version 6.2, hebergement OVH

J'ai teste sur differents pc mais j'ai ce probleme sur tous

Le Network.http.sendRefererHeader est a 2 et j'ai teste var_dump($_SERVER['HTTP_REFERER']) j'obtiens NULL

Auriez-vous une suggestion car je n'ai plus acces a ma base administration via membre.php

Merci d'avance

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Avez-vous remplacé la fonction verify_token par celle proposé par Gilles? Cette correction devrait corriger votre problème.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour

oui j'ai suivi le remplacement de cette fonction mais ca n'a rien change. J'ai fait le test en envoyant la meme base sur un autre serveur, je n'ai pas ce probleme sur l'autre serveur donc ca doit venir d'ovh. Le probleme c'est que mon client ne changera pas de serveur, je suis un peu dans l'impasse pour le moment

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

bonjour,

fais un test en regardant dans ton fichier.htaccess.

Commente ou décommente cette ligne : SetEnv PHP_VER 5

pour le test laisse ta fonction function verify_token d'origine.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Sinon, une solution consiste à contourner la fonction :


function verify_token($name = 'general', $delay_in_minutes = 60, $check_referer_if_set_by_server = true, $cancel_token = true)
{

return true;
if (!empty($_POST['token'])) {
$user_token = $_POST['token'];
} elseif (!empty($_GET['token'])) {
$user_token = $_GET['token'];
}
$result = false;
if (isset($_SESSION['token_' . $name]) && isset($_SESSION['token_time_' . $name]) && !empty($user_token)) {
if ($_SESSION['token_' . $name] == $user_token && $_SESSION['token_time_' . $name] + $delay_in_minutes * 60 >= time()) {
if (!$check_referer_if_set_by_server || !isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER']==$_SESSION['token_referer_' . $name]) {
$result = true;
}
}
}
if ($cancel_token) {
unset($_SESSION['token_' . $name], $_SESSION['token_time_' . $name], $_SESSION['token_referer_' . $name]);
}
return $result;

}
[/CODE]

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour Paulanna et maitre ecommerce

J'ai ecrit a OVH je ne sais pas trop ce qu'ils ont fait mais aujourd'hui je n'ai plus de message token invalide

Ca ne nous aide pas trop pour les autres utilisateurs comme moi mais bon...

Merci de votre aide dans tous les cas

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping