2012-04-11 13 views
6

Tôi có một ứng dụng Sinatra, có sử dụng omniauth mà constantantly được lỗi nàySinatra ứng dụng sử dụng omniauth được rack :: Bảo vệ :: SessionHijacking trong ie9

attack prevented by Rack::Protection::SessionHijacking 

khi tôi cố gắng và đăng nhập (sử dụng tài khoản google) .

Nó hoạt động tốt trong các phiên bản khác của IE và trên chrome/firefox/safari.

thiết lập của tôi là

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) 

Bất cứ ai biết tại sao điều này xảy ra?

+2

Điều này có thể liên quan đến https://github.com/rkh/rack-protection/issues/11 - nếu bạn có thời gian, bạn có thể vui lòng tham gia cuộc thảo luận đó không? Rất tiếc, tôi không thể tạo lại vấn đề này. –

+0

Ý tưởng hay - https://github.com/rkh/rack-protection/issues/11#issuecomment-5066417 – zlog

Trả lời

8

Mô-đun này theo dõi các thuộc tính như USER_AGENT và tương tự (bạn có thể kiểm tra chúng tại đây: https://github.com/rkh/rack-protection/blob/master/lib/rack/protection/session_hijacking.rb). Lỗi này bạn nhận được, có lẽ là do một trong những thuộc tính đó được thay đổi trong phiên. Hãy thử để kiểm tra xem mọi thứ hoạt động chỉ với mô-đun này bị vô hiệu hóa:

set :protection, except: :session_hijacking 
+1

Ah, vô hiệu hóa session_hijacking sẽ ngăn chặn lỗi. Tôi không chắc chắn tôi nên giữ nó bị vô hiệu hóa cho sản xuất mặc dù. Bạn có biết tại sao nó chỉ xảy ra trong IE9? – zlog

+0

Đây là một câu hỏi hay. Có lẽ trong IE9 một trong những tiêu đề được thay đổi một cách nào đó trong quá trình, nhưng điều này sẽ cần một số nghiên cứu. Và đối với mô-đun này, sự bảo vệ của nó không thực sự mạnh mẽ (tất cả các tiêu đề được kiểm tra đó có thể được ** giả mạo dễ dàng **) và * có thể * có vấn đề. Có những biện pháp phòng ngừa khác mà bạn có thể thực hiện, mã hóa khóa phiên thông qua SSL đáng chú ý nhất, và những người khác, xem http://en.wikipedia.org/wiki/Session_hijacking – Ernest

+0

Tuyệt vời, cảm ơn! Vô hiệu hóa session_hijacking sẽ hoạt động ngay bây giờ. Tôi đã đăng các bãi máy chủ trên http://gist.github.com/2358527, nếu có ai đó tò mò về cách môi trường phiên thay đổi. Tôi sẽ nhảy qua chúng nếu tôi có cơ hội. – zlog

0

Bạn có thể thử để nâng cấp đá quý rack bảo vệ của bạn để v1.5.2 hoặc 1.5.3 (mới nhất).

Họ đã xóa theo dõi HTTP_ACCEPT_ENCODING khỏi thư viện session_hijacking.