Không có tùy chọn bí mật nào được cung cấp cho Rack :: Session :: Cảnh báo cookie?


110

Tôi đang chạy Rails 3.2.3, Ruby 1.9 trong Fedora 17. Tôi nhận được cảnh báo này, khi tôi chạy rails svà làm cách nào để khắc phục?

CẢNH BÁO BẢO MẬT: Không có tùy chọn bí mật nào được cung cấp cho Rack :: Session :: Cookie. Điều này gây ra một mối đe dọa an ninh. Chúng tôi đặc biệt khuyên bạn nên cung cấp một bí mật để ngăn chặn các hành vi lợi dụng có thể có từ các cookie được chế tạo. Điều này sẽ không được hỗ trợ trong các phiên bản Rack trong tương lai và các phiên bản sau này thậm chí sẽ làm mất hiệu lực cookie người dùng hiện tại của bạn.


1
Giá trị có được đặt trong config / initializers / secret_token.rb không?
Kashyap

Kashyap - có, một giá trị được đặt.
bigdaveyl

Tôi đã nhận được cảnh báo tương tự sau khi nâng cấp Rails từ 3.2.9 lên 3.2.10
AlexD

2
Trên thực tế, cảnh báo này đã được thêm vào Rack 1.4.2 được phát hành trên rubygems.org mới hôm qua (6 tháng 1 năm 2013) nhưng cam kết thực tế đã được thực hiện vào ngày 18 tháng 3 năm 2012.
AlexD

Yeah, chỉ ngày hôm nay tôi quá đã cảnh báo như vậy
Paritosh Piplewar

Câu trả lời:


86

Đây là một lỗi Rails, vì lớp con vi phạm hợp đồng API của lớp cha.

Người dùng Rails có thể bỏ qua cảnh báo một cách an toàn.

( https://github.com/rack/rack/issues/485#issuecomment-11956708 , đã thêm phần nhấn mạnh)

Xác nhận về cuộc thảo luận về lỗi rails: https://github.com/rails/rails/issues/7372#issuecomment-11981397


4
Cập nhật đá quý đường ray của bạn vì điều này được hỗ trợ cho tất cả đá quý đường ray được hỗ trợ. note @
henrik

19

Đọc cuộc thảo luận dựa trên câu trả lời của tehgeekmeisters, cảnh báo này xuất hiện khi Rails đang sử dụng cookie Rack theo cách khác với dự định. Sẽ không sao nếu chỉ bỏ qua cảnh báo này cho đến khi có thỏa thuận cuối cùng về cách xử lý vấn đề này và bản sửa lỗi tại chỗ.


17

Vấn đề này đã được khắc phục trong Rails 3.2.11 vừa được phát hành.

Nhật ký: https://github.com/rails/rails/commits/v3.2.11

Cam kết: https://github.com/rails/rails/commit/95fe9ef945a35f56fa1c3ef356aec4a3b868937c


1
@Dreyfuzz Lưu ý rằng 3.2.11 muộn hơn 3.2.2 (vì nó là 11, không phải 1.1). Vì vậy, chỉ cần nâng cấp Rails có thể khắc phục sự cố của bạn.
Henrik N

Vâng, vì một số lý do tôi gặp khó khăn khi nghĩ về ký hiệu thập phân trong đó 3.2.2 giống với 3.2.20. Tôi nghĩ tôi đã ở trên bờ vực chảy máu ở đó trong một phút!
Dreyfuzz

16

rails 3.2.9 - ruby ​​1.9.3p125 (2012-02-16 bản sửa đổi 34643) [i686-linux]

Xin chào tất cả mọi người, những điều sau đây đã làm việc cho tôi, nó có thể hiệu quả với bạn.


/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/middleware/session/abstract_store.rb
module Compatibility
          def initialize(app, options = {})
            options[:key]     ||= '_session_id'
            #fixed warning - SECURITY WARNING: No secret option provided to Rack::Session::Cookie.
            options[:secret] ||= Rails.application.config.secret_token
            super
          end
    end

2
Đây là câu trả lời có ít "phiếu bầu" nhất, nhưng là câu trả lời duy nhất thực sự giải quyết được vấn đề, không hạ cấp và có vấn đề về tính tương thích. Nó chỉ xóa tin nhắn gây phiền nhiễu
Aleks

1
Thay vì vá mã đường ray. Tôi nghĩ điều này tốt hơn nên được giải quyết trong bản phát hành. nâng cấp lên 3.2.11 sẽ tốt hơn là sửa đổi mã đường ray.
allenhwkim

6

Hạ cấp xuống rack 1.4.1 là đủ để giải quyết vấn đề này ngay bây giờ. một vấn đề mở cho điều này và tôi vừa gửi một yêu cầu kéo có vẻ như để khắc phục sự cố cho tôi. Trong mọi trường hợp, hãy xem sự cố và bạn có thể nâng cấp lên rack 1.4.2 sau khi điều này được khắc phục.

Rõ ràng, có cuộc thảo luận đang diễn ra về cách khắc phục vấn đề này trong một vấn đề khác . Bạn sẽ phải hạ cấp xuống 1.4.1, bỏ qua nó hoặc tìm ra cách khắc phục của riêng bạn cho đến khi điều này được xử lý (và được báo cáo lại, nếu điều đó xảy ra).


5

Một sự cố đã được mở trong Github https://github.com/rails/rails/issues/8789 . Có vẻ như một lỗi liên quan đến Rails 3.2.10 với Rack 1.4.2 đang gây ra điều này. IMO, nó có thể được bỏ qua một cách an toàn cho đến khi sự cố được giải quyết.

CHỈNH SỬA : Vấn đề này đã được giải quyết trong Rails 3.2.11.


3

rails cập nhật lên 3.2.13, có thể giải quyết câu hỏi này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.