2010-11-23 8 views
3

Ich habe eine Rails 3 App konfiguriert mit Benutzerregistrierung mit Gerät läuft auf einem Server. Ich erlaube den Leuten, sich über die Website beim Server anzumelden und den Leuten zu erlauben, Konten zu erstellen und sich mit einer Iphone App anzumelden.Wie kann man entweder a) HTTP-Authentifizierung ohne CSRF-Token + SSL oder b) CSRF-Token mit Gerät setzen?

Wenn die Leute die iPhone-App verwenden, würde ich diese beiden Aktionen unterstützen möchten:

a) Anmelden für Konto ohne CSRF (tut dies Ursache Sicherheitsprobleme)?

b) Anmelden mit http auth durch SSL gesichert

c) jede POST-Anforderungen an den Server nach dem Einloggen mit http auth mit SSL gesichert werden.

Wenn der Benutzer auf der Website ist, möchte ich CSRF-Tokens für alle Aktionen (damit der Benutzer nicht jedes Mal Benutzername und Kennwort eingeben).

Vielen Dank für Ihre Hilfe.

+0

CSRF-Token haben nichts mit der Eingabe eines Benutzernamens und eines Passworts zu tun. Sie stellen nur sicher, dass Sie keine Cross-Site-Anfrage Angriff gegen einen angemeldeten Benutzer ausführen können (sagen wir, mit einem speziell gestalteten Javascript Mouseover oder eingebettetes Bild). Sie stellen lediglich sicher, dass das Formular bei der Veröffentlichung eines Formulars vom Benutzer Ihrer Website stammt. –

Antwort

3

Sie können das CSRF-Token auf einem Controller oder einzelnen Aktionsmethoden selektiv deaktivieren.

class StatsController < ApplicationController 
    skip_before_filter :verify_authenticity_token 
    ... 
end 

Ich suche eigentlich etwas ähnliches zu tun, werde ich das iPhone einen anderen Domänennamen verwenden, und die selektiv deaktivieren: verify_authenticity_token Filter basierend auf ein paar Bedingungen. Dies soll uns nur aufhalten, bis wir unsere OAUTH2-Implementierung in Betrieb nehmen können.

+1

Um 'skip_before_filter: verify_authenticity_token,: id =>: skip_csrf? 'Zu erläutern, implementieren Sie einfach' skip_csrf?' Auf Ihrem Application Controller mit den von Ihnen gewünschten Bedingungen. –