2012-04-11 4 views
6

ich Sinatra App haben, die omniauth verwendet, die constantantly diesen FehlerSinatra App omniauth mit bekommt Rack-:: Schutz :: Session Hijacking in ie9

attack prevented by Rack::Protection::SessionHijacking 

wenn ich versuche, und melden Sie sich an (mit einem Google-Konto) bekommt .

Es funktioniert gut in anderen Versionen von IE und auf Chrome/Firefox/Safari.

Mein Setup ist

rack (1.4.1) 
rack-force_domain (0.2.0) 
rack-protection (1.2.0) 

sinatra (1.3.2) 
    rack (~> 1.3, >= 1.3.6) 
    rack-protection (~> 1.2) 
    tilt (~> 1.3, >= 1.3.3) 
omniauth (1.0.3) 
    hashie (~> 1.2) 
    rack 

omniauth-google-oauth2 (0.1.9) 
    omniauth (~> 1.0) 
    omniauth-oauth2 
omniauth-oauth2 (1.0.0) 
    oauth2 (~> 0.5.0) 
    omniauth (~> 1.0) 

Wer weiß, warum dies geschieht?

+2

Dies könnte mit https://github.com/rkh/rack-protection/issues/11 zusammenhängen - wenn Sie die Zeit haben, könnten Sie bitte in diese Diskussion springen? Ich kann dieses Problem leider nicht reproduzieren. –

+0

Gute Idee - https://github.com/rkh/rack-protection/issues/11#issuecomment-5066417 – zlog

Antwort

8

Dieses Modul verfolgt Eigenschaften wie USER_AGENT und ähnliche (Sie können sie hier überprüfen: https://github.com/rkh/rack-protection/blob/master/lib/rack/protection/session_hijacking.rb). Dieser Fehler ist vermutlich darauf zurückzuführen, dass eine dieser Eigenschaften während der Sitzung geändert wurde. Versuchen zu testen, ob alles mit nur diesem Modul arbeitet deaktiviert:

set :protection, except: :session_hijacking 
+1

Ah, die Deaktivierung von session_hijacking verhindert den Fehler. Ich bin mir nicht sicher, ob ich es für die Produktion deaktiviert halten sollte. Weißt du, warum es nur in IE9 auftritt? – zlog

+0

Das ist eine gute Frage. Vielleicht wird in IE9 einer dieser Header auf irgendeine Art und Weise geändert, aber das würde einige Nachforschungen erfordern. Und für dieses Modul ist sein Schutz nicht wirklich so stark (all diese überprüften Header können ** leicht gefälscht werden) und * kann * problematisch sein. Es gibt andere Vorkehrungen, die Sie ergreifen könnten, den Sitzungsschlüssel hauptsächlich über SSL verschlüsselnd, und andere, sehen Sie http://en.wikipedia.org/wiki/Session_hijacking – Ernest

+0

Großartig, danke! Das Deaktivieren von session_hijacking funktioniert jetzt. Ich habe die Server-Dumps auf http://gist.github.com/2358527 veröffentlicht, wenn jemand neugierig ist, wie sich die Sitzungsumgebungen ändern. Ich werde durch sie tauchen, wenn ich eine Chance bekomme. – zlog

0

Sie könnten versuchen, Ihren Rack-Schutz gem Upgrade auf v1.5.2 oder 1.5.3 (spätestens).

Sie haben die Verfolgung von HTTP_ACCEPT_ENCODING aus der session_hijacking-Bibliothek entfernt.

Verwandte Themen