• # Session invalidée ?

    Posté par (site web personnel) . En réponse au journal Message d'intérêt public - reconfiguration nécessaire aux clients pour poster sur la tribune. Évalué à 5. Dernière modification le 26 juin 2018 à 18:45.

    Au sujet des attaques dites CSRF (Cross Site Request Forgery), il y a 2 moyens de s'en prémunir :

    • un jeton anti-CSRF dans les formulaires
    • vérifier l'entête HTTP Origin (quand il est disponible).

    Rails fournit depuis très longtemps la première solution et un hack avait été mis en place pour aussi avoir la deuxième solution quand le jeton était absent. Depuis quelques versions, Rails fait les deux et j'ai donc retiré le code. J'ai ensuite testé avec curl, on pouvait bien poster sur la tribune sans le jeton.

    Au sujet des cookies, ça fait longtemps que l'on a ces 2 cookies :

    • linuxfr.org_session est le cookie de session qui sert à authentifier l'utilisateur (et il contient le double du jeton anti-CSRF qui sert à la comparaison)
    • remember_account_token est un cookie persistant, qui n'est présent que pour les personnes ayant coché la case « Se souvenir de moi » à la connexion.

    Quand quelqu'un ferme son navigateur, le cookie de session disparaît. La fois suivante, lorsqu'il revient sur le site, le cookie remember_account_token est utilisé pour recréer une nouvelle session et donc un nouveau cookie linuxfr.org_session.

    Pour le problème pour poster sur la tribune, je n'ai pas compris précisément ce qui pose problème mais mon hypothèse principale est que les cookies de session ont été invalidés lors de la montée de version de Rails.