2010-11-23 5 views
3

J'ai une application Rails 3 configurée avec l'enregistrement de l'utilisateur à l'aide d'un produit fonctionnant sur un serveur. Je permets aux gens de se connecter au serveur via le site Web et permet également aux gens de créer des comptes et de se connecter à l'aide d'une application Iphone.Comment autoriser a) HTTP auth sans jeton CSRF + SSL ou b) exiger un jeton CSRF avec legs?

Lorsque les gens utilisent l'application Iphone, je voudrais soutenir ces deux actions:

a) Inscription compte sans CSRF (cette cause ne les questions de sécurité)?

b) une session avec http auth sécurisée par SSL

c) les requêtes POST au serveur après connexion à être fixé par http auth avec SSL. Lorsque l'utilisateur est sur le site Web, je veux exiger des jetons CSRF sur toutes les actions (afin que l'utilisateur ne tape pas le nom d'utilisateur et le mot de passe à chaque fois).

Nous vous remercions de votre aide.

+0

Les jetons CSRF n'ont rien à voir avec la saisie d'un nom d'utilisateur et d'un mot de passe. Ils s'assurent juste que vous ne pouvez pas exécuter une attaque de requête inter-site contre un utilisateur connecté (par exemple, avec un survol Javascript spécialement conçu ou une image intégrée). Ils s'assurent juste que lorsqu'un formulaire est posté, le formulaire a été créé par l'utilisateur sur votre site. –

Répondre

3

Vous pouvez désactiver de manière sélective le jeton CSRF sur un contrôleur ou des méthodes d'action individuelles.

class StatsController < ApplicationController 
    skip_before_filter :verify_authenticity_token 
    ... 
end 

Je suis à la recherche de faire quelque chose de semblable, je vais avoir l'iPhone d'utiliser un nom de domaine différent et désactiver de manière sélective le: verify_authenticity_token filtre basé sur deux conditions. C'est seulement pour nous retenir jusqu'à ce que nous puissions mettre en place notre implémentation OAUTH2.

+1

Pour élaborer, 'skip_before_filter: verify_authenticity_token,: id =>: skip_csrf?', Puis implémentez 'skip_csrf?' Sur votre contrôleur d'application avec les conditions que vous voulez. –