Désactiver le jeton CSRF dans les rails 3


105

J'ai une application de rails qui sert certaines API à une application iPhone. Je veux pouvoir simplement publier sur une ressource sans me soucier d'obtenir le bon jeton CSRF. J'ai essayé certaines méthodes que je vois ici dans stackoverflow mais il semble qu'elles ne fonctionnent plus sur les rails 3.

Merci de m'aider.

Réponses:


175

Dans le contrôleur où vous souhaitez désactiver CSRF, le contrôle:

skip_before_action :verify_authenticity_token

Ou pour le désactiver pour tout sauf pour quelques méthodes:

skip_before_action :verify_authenticity_token, :except => [:update, :create]

Ou pour désactiver uniquement les méthodes spécifiées:

skip_before_action :verify_authenticity_token, :only => [:custom_auth, :update]

Plus d'informations: RoR Request Forgery Protection


1
C'est la bonne réponse pour les applications qui ont un mélange de formulaires normaux accessibles par navigateur et de points de terminaison d'API. La réponse de Markus Proske serait correcte si vous étiez absolument sûr de ne pas avoir de formulaires accessibles par navigateur dans votre application.
Asfand Qazi

Où cela va-t-il exactement? Et si le contrôleur faisait partie d'un bijou?
Compte à jeter le

Puis-je vous demander si vous pouvez répondre à cette question très similaire? stackoverflow.com/questions/50159847/…

105

Dans Rails3, vous pouvez désactiver le jeton csrf dans votre contrôleur pour des méthodes particulières:

protect_from_forgery :except => :create 

12
Pour tous ceux qui lisent, notez que c'est ce qui devrait entrer ApplicationController. La réponse de Mike Lewis ci-dessous ( skip_before_filter :verify_authenticity_token) est de savoir comment le désactiver par contrôleur, en supposant que le contrôleur hérite de ApplicationController.
NudeCanalTroll

Semble que ce n'est pas sûr stackoverflow.com/questions/10676018/… . Qu'est-ce que tu penses? c'est ça?
sites

@NudeCanalTroll vous voulez dire mettre ça dans le contrôleur là où je veux que ça ne marche pas?
BlackDivine

Puis-je vous demander si vous pouvez répondre à cette question très similaire? stackoverflow.com/questions/50159847/…

32

Avec Rails 4, vous avez désormais la possibilité d'écrire au skip_before_actionlieu de skip_before_filter.

# Works in Rails 4 and 5
skip_before_action :verify_authenticity_token

ou

# Works in Rails 3 and 4 (deprecated in Rails 4 and removed in Rails 5)
skip_before_filter :verify_authenticity_token

1
Quelle est la différence?
Adam D. Ruppe

Puis-je vous demander si vous pouvez répondre à cette question très similaire? stackoverflow.com/questions/50159847/…

John Sam, quand j'aurai le temps, j'essaierai de m'y mettre.
jason328
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.