Closed Draleg closed 7 years ago
As-tu la possibilité de voir les logs associés à php pour voir s'il y a une erreur ? Je pense que le problème de jeton ne peut-être lié qu'à la perte d'identification (avec le cookie) entre ton navigateur et le serveur. As-tu essayé sur plusieurs navigateurs ? Passes-tu par un proxy ?
J'ai bien essayé plusieurs navigateurs, mais le problème était toujours le même. J'étais au travail et la je passe par un proxy.
Du coup en rentrant chez moi et j'ai pu constater que mon temps de midi à tester n'a servi à rien et que tu as raison concernant l'hypothèse du proxy, car ici tout fonctionne aux petits oignons !
Merci.
Et de retour au boulot, impossible de se connecter... je vais devoir passer en 3G pour actualiser mes flux :'(
Est-ce que tu peux essayer d'ajouter un '?view=expanded' ou '?view=list' à la fin de l'url quand tu accèdes à la page principale avant de te connecter. J'avais un soucis avec un proxy et une instance shaarli que j'arrivais à contourner en ajoutant un '?' à la fin de l'url.
J'applique le ?view=expanded ou ?view=list , je constate le changement par apport à l'url sans le paramètre donc ok pour ça. Mais lorsque je me connecte toujours bad token...
Mes connaissances en programmation date de l'époque de scolaire, je vais donc proposer et non pouvoir résoudre :'( ... tu as utiliser un mécanisme de protection de vol de session sur un fingerprint spécifique qui ferait qu'au niveau de la transition des paquets j'ai une perte ce qui suggèrerais un vol de session ?
De toute facon c'est au boulot que ça coince... quelque chose doit être mal configuré... J'ai essayé une session sur TOR lol... mais ça n'a pas résolu le problème (qui ne tente rien n'a rien)...
Il y a effectivement une option pour le vol de session. Il faut modifier le fichier data/config.php à la fin, il devrait y avoir
$this->disableSessionProtection = '0';
à remplacer par
$this->disableSessionProtection = '1';
Je vais voir ça, mais ça m'ennuie de désactiver une protection :'( ... Au delà de ça me serait-il possible via le serveur même en ssh de lancer une commande qui lance un all-update ou de créer une page qui génère la requête ?
Oui bien sûr, mais il te faut pouvoir accéder à ta page de configuration pour avoir le hash qui te permettra de mettre à jour par une url, du style https://url/kriss_feed/?update&cron=123456789abcdef
Tu peux juste essayer de désactiver temporairement l'option pour voir si ça vient effectivement de ça ?
Bien sur c'est ce que je faisais ;-).
Mais pas de changement ...
Alors la je sèche... en 3G même erreur ... J'ai alors cru à la redirection no-ip... Je suis passé directement via l'ip mais même erreur. La seule nuance qui reste c'est ma redirection de port qui n'est présente qu'à partir d'une connexion externe...
L'idée du hash me tente bien mais vu que je n'ai pas accès, ce dernier est-il dans le fichier data/config.php ? car la j'en vois deux.
Bon tout est contourné par une connexion SSH sur mon serveur, une petite navigation via lynx et un chargement des flux lolll...
Est-ce que tout fonctionne avec pluxml/shaarli de la même façon redirection/port ? Pour le hash, c'est un sha1 de la concaténation des 2 hash de config.
sha1($salt.$hash)
Et si dans le fichier index.php tu modifies la fonction getUrl
public static function getUrl() {
return "url + port";
...
}
Je teste ça ;-)
D'ailleurs tu dois pouvoir le vérifier facilement en regardant le code source du code html
<base href="...">
Oups mauvaise manip
Alors je trouve bien la fonction public
static function getUrl() {
Tu as plusieurs initialisations de variables dedans, j'enlève le tout pour mettre tel que tu le propose ?
non tu laisses tout, juste tu ajoutes le return au tout début de la fonction pour qu'elle retourne la bonne url (si jamais ça vient de ça)
Je n'avais pas vu le post de vérification
<base href="
Je confirme que l'url et port sont ok, sans toucher à la fonction.
le http(s) aussi ? parce que sur ce post https://github.com/tontof/kriss_feed/issues/241 ça semblait venir de là. D'ailleurs le problème avait été résolu en ajoutant
$GLOBALS['BASE_URL'] = 'http://yoururl/kriss/feed/path';
dans un fichier de plugin
Alors première modification proposée du
public static function getUrl() { return "http://yoururl/kriss/feed/path:port" ... }
Je test, page blanche alors que l'url et le port sont bon.
Par curiosité, je test l'autre option en l'initialisant à la place du return donc
public static function getUrl() { $GLOBALS['BASE_URL'] = 'http://yoururl/kriss/feed/path:port'; ... }
La je n'ai plus le message bad token mais je retombe sur la page de login (sans être loguer j'ai vérifier en retournant à la racine).
oups pour le premier test, c'est peut-être parce qu'il manquait le ';' à la fin de la ligne (je l'avais oublié) pour le 2è normalement cette ligne il faut la mettre en haut du fichier index.php pas dans la fonction getUrl (mais normalement ça devrait marcher aussi dans la fonction)
Honte à moi... j'ai refait ce premier test
public static function getUrl() { return "http://yoururl/kriss/feed/path:port"; ... }
Bad token.
Pour le second test si c'est comme je m'en souviens une variable globale si je la modifie la logiquement ça portée est bonne... mais si utilisée avant cette fonction alors ça posera problème.
Pour contourner le problème au travail je me suis fait un raccourcis:
?update&cron=123456789abcdef
et un autre
?read=all&cron=123456789abcdef
Les deux ont été.
Euh ? mais du coup tu les lis comment ?
C'est vraiment bizarre, il faudrait pouvoir approfondir en affichant des var_dump($_SERVER)
et var_dump($_SESSION)
parce que là je ne comprends pas trop pourquoi il perd les tokens.
Tu n'as pas vu d'erreurs dans les logs PHP ?
Non justement aucune erreur... J'ai même parsé par acquis de conscience tout le /var/log avec un grep et en string kriss,feed,token (c'est aller à la pêche mais bon...) aucun résultat sauf des get 200 dans l'acces_log ... Moi pas de problème pour ces deux affichage mais je dois le faire sur une session en cours je rajoute ça à la fin d'index.php peut-être ?
Maintenant je pense savoir où est le problème... Il faut savoir que mon port_forwarding renvois d'un port X venant de l'extérieure vers un port Y dans mon réseau local. C'est juste pour moi une forme de sécurité que le port ouvert ne soit pas le port direct d'écoute dans mon LAN. A mon avis c'est la que ça pose problème.
Dans un premier temps si tu ajoutes après session_start();
var_dump($_SESSION);
var_dump(session_id());
normalement tu devrais voir les tokens s'ajouter à chaque fois que tu actualises la page Il faut vérifier que le session_id() ne change pas.
De mon côté, ça donne quelque chose comme
array(7) {
["view"]=>
string(8) "expanded"
["listFeeds"]=>
string(4) "show"
["filter"]=>
string(6) "unread"
["order"]=>
string(10) "olderFirst"
["byPage"]=>
string(1) "1"
["lang"]=>
string(5) "en_US"
["tokens"]=>
array(3) {
int(1)
["8c47440faa2ae0588a620..."]=>
int(1)
["95175f85a821b18a81698..."]=>
int(1)
["9a13d77244aa3e58a11cf..."]=>
int(1)
}
}
string(32) "dc4eeb4d4e..."
Les sessions sont normalement gérées par PHP du coup, ce n'est pas sensé être grave que tu rediriges sur un autre port ?
Logiquement non jsutement vu que c'est côté serveur, je n'ai jamais eu de problème avec le pluxml, le shaarli et avant le wordpress. Je fais le test.
J'ai bien ajouté les deux lignes juste en dessous du session start.
public static function init() ... session_start(); var_dump($_SESSION); var_dump(session_id()); ...
Hors je n'a pas d'ajout mais une ligne qui change à chaque fois pour chaque actualisation sur la même page.
Ici un exemple lors d'une tentative de connexion:
array(0) { } string(26) "m1flh87d77hq7dd..."
array(0) { } string(26) "9ebh99rg50o9ah8..."
array(0) { } string(26) "nub8ness6du4fum..."
Oui je réagis tardivement sur ta question:
Euh ? mais du coup tu les lis comment ?
Je suis en mode d'usage hybride je n'ai plus le terme en tête... Le contenu est visible mais la modification n'est pas autorisée.
Bon ben on est sûr que c'est bien la session php qui ne fonctionne pas correctement...
Si tu ajoutes un session_start()
au tout début du fichier index.php
à la 2è ligne, juste après <?php
Si je met le session_start();
au début de fichier index.php, résultat avec les deux fonctions:
array(6) { ["view"]=> string(4) "list" ["listFeeds"]=> string(4) "show" ["filter"]=> string(6) "unread" ["order"]=> string(10) "newerFirst" ["byPage"]=> int(10) ["lang"]=> string(5) "en_US" } string(26) "8h5imm6drup27j...."
Après actualisation l'id reste le même.
Je décide donc de me loguer... je rentre les bons identifiants et la retour à la page principale avec ceci:
array(0) { } string(26) "8h5imm6drup27...."
Mais je ne suis pas logué ...
Quand tu actualises tu n'as pas de variables tokens dans ton affichage qui apparaît ? (tu as bien réinitialisé entre chaque test que tu as fait ?)
Quand tu actualises tu n'as pas de variables tokens dans ton affichage qui apparaît ?
Je précise que les deux fonctions de dump sont ajoutées en dessous du premier sessions_start() que j'ai ajouté. Non je n'ai pas de variables tokens.
(tu as bien réinitialisé entre chaque test que tu as fait ?)
Réinitialisé ? j'ai actualisé la page ça oui, veux-tu dire autre chose par réinitialisé?
Je voulais dire dans le fichier index.php quand tu faisais des tests tu reviens bien comme au début à chaque fois ?
Dans page de connexion si tu regardes le code source, t'as pas un truc qui ressemble à ça ?
<input type="hidden" name="token" value="09972fd368409b75...">
Je voulais dire dans le fichier index.php quand tu faisais des tests tu reviens bien comme au début à chaque fois ?
Je confirme
Dans page de connexion si tu regardes le code source, t'as pas un truc qui ressemble à ça ?
<input type="hidden" name="token" value="d802be78f593c275da12a49f2e6e...">
Dump:
array(7) { ["view"]=> string(4) "list" ["listFeeds"]=> string(4) "show" ["filter"]=> string(6) "unread" ["order"]=> string(10) "newerFirst" ["byPage"]=> int(10) ["lang"]=> string(5) "en_US" ["tokens"]=> array(1) { ["d5e1b7ac1947c21ec08858ff130cfcd10f765065"]=> int(1) } } string(26) "8h5imm6drup27j166hnk..."
Les deux sont différents est-ce normal ?
oui je pense que c'est normal et si tu actualises une autre fois, celui en cours devrait apparaître. (parce que l'ajout du token se fait après l'affichage) Mais du coup ça semble fonctionner. Je ne comprends pas pourquoi ça te vide la session quand tu te connectes. Est-ce que tu peux retester en désactivant le vol de session https://github.com/tontof/kriss_feed/issues/385#issuecomment-305700913 Tu as peut-être 2 problèmes différents
Dans les différences que j'ai vu avec shaarli sur la connexion, il y a
session_set_cookie_params($lifetime, $path, $domain, $secure);
J'ai ajouté le $secure, il faudrait voir si en enlevant ça, ça fonctionne mieux ou pas
session_set_cookie_params($lifetime, $path, $domain);
Page principale vol de session désactivée:
Page principale:
array(7) { ["view"]=> string(4) "list" ["listFeeds"]=> string(4) "show" ["filter"]=> string(6) "unread" ["order"]=> string(10) "newerFirst" ["byPage"]=> int(10) ["lang"]=> string(5) "en_US" ["tokens"]=> array(2) { ["d5e1b7ac1947c21ec08858ff130cfcd1....."]=> int(1) ["d802be78f593c275da12a49f2e6e53....."]=> int(1) } } string(26) "8h5imm6drup27j166....."
Page de login:
array(7) { ["view"]=> string(4) "list" ["listFeeds"]=> string(4) "show" ["filter"]=> string(6) "unread" ["order"]=> string(10) "newerFirst" ["byPage"]=> int(10) ["lang"]=> string(5) "en_US" ["tokens"]=> array(2) { ["d5e1b7ac1947c21ec08858ff130cfcd10f..."]=> int(1) ["d802be78f593c275da12a49f2e6e53f36..."]=> int(1) } } string(26) "8h5imm6drup27j166hn..."
Lors du login, plus de bad token, retour à la page principal et le dump:
array(0) { } string(26) "8h5imm6drup27j166hnk...."
J'ai ajouté le $secure, il faudrait voir si en enlevant ça, ça fonctionne mieux ou pas
Je teste vais tester sur cette fonction
Euh c'est quoi pour toi la différence entre Page principale et Page de login ?
Il reste à tester sans le $secure du cookie, mais après, je n'ai plus trop d'idée...
Euh c'est quoi pour toi la différence entre Page principale et Page de login ?
C'est la meme page index.php c'est juste que je passe sur la génération du formulaire de login via ?login. Ma formulation peut effectivement prêter à confusion.
Je repasse a "0" le vol de session.
Je retire le $secure.
Je vais sur la page principale(index.php):
array(6) { ["view"]=> string(4) "list" ["listFeeds"]=> string(4) "show" ["filter"]=> string(6) "unread" ["order"]=> string(10) "newerFirst" ["byPage"]=> int(10) ["lang"]=> string(5) "en_US" } string(26) "8h5imm6drup27j166hn..."
Clic sur login(index.php?login):
array(6) { ["view"]=> string(4) "list" ["listFeeds"]=> string(4) "show" ["filter"]=> string(6) "unread" ["order"]=> string(10) "newerFirst" ["byPage"]=> int(10) ["lang"]=> string(5) "en_US" } string(26) "8h5imm6drup27j166hnko...."
Tentative de login, retour sur l'affichage principale(index.php) mais je ne suis pas logué.
array(0) { } string(26) "8h5imm6drup27j166hn...."
Même résultat sur le même test mais en ayant désactiver le vol de session.
Oh punaise, je viens de comprendre que tu utilisais KrISS feed en mode protected ou public et pas private ! Je n'avais pas eu de réponse à « Euh ? mais du coup tu les lis comment ? » c'est pour ça que je ne comprenais pas. https://github.com/tontof/kriss_feed/issues/385#issuecomment-305712864
Tu as moyen simple de me donner un accès pour que je fasse des tests, parce que par messages interposés c'est pas évident ?
Il faudrait ajouter des var_dump un peu partout pour essayer de comprendre...
Oh punaise, je viens de comprendre que tu utilisais KrISS feed en mode protected ou public et pas private !
J'ai bien répondu tardivement mais entre plusieurs réponses #385 (comment) ;-) (j'ai d'ailleurs du faire une recherche par texte pour retrouver ma réponse lol).
Pour l'accès malheureusement non ce n'est pas possible... c'est de l'auto-hébergement que je ne diffuse pas sur le net... rien de bien secret juste que j'aime ma tranquillité et avoir accès à ce que je veux tout le temps :-p . Mais je comprends totalement que par flux interposés c'est vraiment compliqué.
Vu que de l'intérieur de mon réseau tout fonctionne (même sous Lynx c'est pour dire!!) Je présume vraiment que cette perte de session provient du port forwarding qui est la seule nuance qui reste présente entre ma connexion 3G et ma connexion/proxy du boulot. Car j'ai exclu la redirection DNS en pointant directement sur l'IP...
Ah oui effectivement, mais comme la réponse était directement à la suite de la citation, ça apparaissait tout en gris et je n'avais pas fait attention.
Bref, je comprends pour l'accès, c'est logique. Mais du coup, je vais préparer un fichier test index.php avec différents affichages pour voir s'il y a moyen de comprendre plus rapidement.
Pendant que j'étais en train de préparer le fichier index test je suis tombé sur ça http://php.net/manual/en/function.session-regenerate-id.php Du coup tu peux essayer de mettre en commentaire la ligne
session_regenerate_id(true);
//session_regenerate_id(true);
Et puis pour un autre test si le précédent n'est pas concluant
session_set_cookie_params($lifetime, $path, $domain, $secure);
//session_set_cookie_params($lifetime, $path, $domain, $secure);
Parce qu'effectivement ça peut poser problème en fonction de l'ordre des appels http://php.net/manual/en/function.session-set-cookie-params.php
Moon github n'a pas affiché les notitications... Désolé du délais!!
Alors je reprends, je laisse le start_session du début, je laisse les deux fonctions de dump. Dans un premier temps je commente le session_regenerate_id et je fais les mêmes tests que tout à l'heure.
Si négatif, je retest sans le regeneration d'id mais en commentant session_set_cookie_params, au boulot!
(Pour le moment j'ai contourné le problème en générant des taches cron qui lance un script avec lynx qui regénère le flux tout les X temps et qui va le vider tout les jours à 00h... car me taper une veille de plusieurs jours c'est moyen de toute facon...)
Bonjour,
J'ai voulu installer KrissFeed pour son aspect sans DB, je télécharge le fichier index.php, je vérifie les dépenses(apt-get): install php-xml install php-mbstring install php-curl Les droits d'accès sont corrects, cependant j'ai un problème lorsque je veux créer mon utilisateur, j'ai quelque soit le login/mdp/langue une erreur de jeton.
Je dispose d'un pluxml/shaarli et je n'ai pas constaté de problème liée aux sessions comme j'ai pu le lire dans un post précédent.
Pour info j'ai effacé mes sessions sauvegardées, je suis rentré consécutivement sur mon blog/shaarli, ce qui m'a donné deux sessions. Je suis passer sur KrissFeed et la j'ai eu 9 sessions supplémentaires de créées, donc l'accès au chemin et les droits d'écritures sont correctes.
D'où peut provenir ce problème ?
D'avance merci, bonne journée.
ENGLISH VERSION (thank's google)
Hello,
I wanted to install KrissFeed because there is no DB, I download the file index.php, I check the dependency (apt-get): Install php-xml Install php-mbstring Install php-curl The access rights are corrects, however I have a problem when I want to create my user, I have either login / pass / language a token error.
I have a pluxml / shaarli and I have not noticed a problem related to the sessions like I saw in a previous post.
Just to know, I deleted my saved sessions, I came back consecutively on my blog / shaarli, which gave me two sessions. I'm going on KrissFeed and I had 9 extra sessions created, so access to the path and write permissions are correct.
Where can this problem come from?
Thank's in advance, have a nice day.