Depuis la dernière mise à jour, le BoardsController vérifie à nouveau la validité de l'authenticity_token pour accepter un post sur la tribune.
Cela empêche les clients externes, qui n'ont pas accès à ce token, de poster, ce qui représente probablement 80% des utilisateurs de la tribune.
Je ne suis pas sûr de comprendre la raison des commits :
Accept the referer for voting on poll (instead of authenticity token)
diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb
index d2ddd8ca..466bbfef 100644
--- a/app/controllers/boards_controller.rb
+++ b/app/controllers/boards_controller.rb
@@ -32,10 +32,6 @@ protected
params.require(:board).permit(:object_type, :object_id, :message)
end
- def verify_referer_or_authenticity_token
- request.referer =~ /^https?:\/\/#{MY_DOMAIN}\// or verify_authenticity_token
- end
-
def expire_cache
expire_page action: :show, format: :xml
end
Kill verify_referer_or_authenticity_token
diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb
index c6508f07..1ffe4a7b 100644
--- a/app/controllers/boards_controller.rb
+++ b/app/controllers/boards_controller.rb
@@ -1,7 +1,5 @@
# encoding: utf-8
class BoardsController < ApplicationController
- skip_before_action :verify_authenticity_token
- before_action :verify_referer_or_authenticity_token, only: [:create]
before_action :authenticate_account!, only: :create
after_action :expire_cache, only: [:create]
caches_page :show, if: Proc.new { |c| c.request.format.xml? }
Ça l'air d'avoir un rapport avec les sondages, mais je ne vois pas le rapport entre le BoardsController et les sondages, mais voilà.
J'ai une pull request ici : https://github.com/linuxfrorg/linuxfr.org/pull/227
qui re-désactive verify_authenticity_token
au post sur la tribune (sans toutefois remettre toute la fonction verify_referer_or_authenticity_token
parce que j'imagine qu'elle a disparu pour une bonne raison).
# Spécifications
Posté par JPEC . Évalué à 4 (+0/-0).
Bonjour,
Existe-t-il une spécification sur la tribune ? Je suis en train de développer un client GTK+ pour la tribune et j'arrive à récupérer les messages au format tsv mais je sèche pour la méthode POST.
[^] # Re: Spécifications
Posté par seeschloß (site web personnel) . Évalué à 1 (+0/-0).
Il y a quelques infos ici https://linuxfr.org/wiki/tribune notamment l'URL d'envoi, mais tu tombes à un bien mauvais moment puisque depuis hier la tribune de Linuxfr ne fonctionne plus avec aucun client à moins de faire des trucs tordus.
Normalement c'est très simple, tu dois juste envoyer un POST avec un paramètre
message
, et le message que tu veux poster. Le headeruser-agent
indique ton nom si tu es anonyme (pour la plupart des tribunes, mais le post anonyme n'est pas autorisé sur Linuxfr) et pour l'authentification il n'y rien d'autre que le cookie (à récupérer à partir d'un navigateur après s'être loggué).Mais depuis hier, pour pouvoir poster sur Linuxfr il faut aussi envoyer le cookie
remember_account_token
(qui a une durée de vie limitée, mais à voir) etauthenticity_token
comme paramètre de POST, qui doit être récupéré à partir d'une session existante en postant sur la tribune à partir de l'interface web. C'est inutile sur les autres tribunes plus normales.[^] # Re: Spécifications
Posté par devnewton 🍺 (site web personnel) . Évalué à 2 (+0/-0).
Une fois que tu auras réussi à GETer et à POSTer, tu pourras consulter https://rfm.bci.im/ pour le format des messages et des norloges.
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
[^] # Re: Spécifications
Posté par JPEC . Évalué à 2 (+0/-0).
Merci pour le lien !
[^] # Re: Spécifications
Posté par dguihal . Évalué à 3 (+0/-0).
Ouais alors pour info c'est à prendre avec de très grosses pincettes cette pseudo "norme" hein
Parce que bon ça a été écrit par et pour une seule moule qui a pris le soin d'y faire passer pour "norme" des choses qu'il est le seul à faire en mode passage en force (en particulier pour ce qui concerne les norloges).
Je t'invite donc à poser des questions sur la tribune et interagir avec elle pour comprendre son fonctionnement et les us et coutumes de ses pratiquants (et oui le troll en fait partie comme tu peux le constater).
[^] # Re: Spécifications
Posté par devnewton 🍺 (site web personnel) . Évalué à 2 (+0/-0).
Une accusation injuste: c'est ainsi que fonctionne la moulosphère depuis la nuit des temps. RFM est juste une compil à laquelle tout le monde peut contribuer.
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
# Non
Posté par Bruno Michel (site web personnel) . Évalué à 3 (+0/-0).
Ruby on Rails a une protection pour éviter les attaques dites CSRF (Cross Site Request Forgery). Cette protection se base sur un jeton envoyé via les formulaires. Il est également possible de s'appuyer sur l'entête HTTP Origin (quand il est disponible) pour détecter qu'une requête provient bien du site initial. C'est ce que le commit cité dans cette entrée de suivi faisait.
Depuis quelques versions, Rails a modifié son code et a intégré la vérification de l'entête HTTP Origin. Il n'est donc plus utile d'avoir ce hack. Pire, la documentation de Rails indique maintenant que c'est une mauvaise idée :
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.