2012-04-29 4 views
109

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 s và cách khắc phục?Không có tùy chọn bí mật nào được cung cấp cho Rack :: Session :: Cookie warning?

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

+1

Giá trị được đặt trong config/initializers/secret_token.rb? – Kashyap

+0

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

+0

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

Trả lời

84

Đây là lỗi Rails vì lớp con vi phạm hợp đồng API siêu lớp.

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

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

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

+4

Cập nhật đá quý đường ray của bạn vì đây là backported cho tất cả các đá quý hỗ trợ đường ray. lưu ý @ henrik-n – shadowbq

6

Hạ cấp xuống giá 1.4.1 phải đủ để giải quyết vấn đề này ngay bây giờ. an issue open cho việc này và tôi vừa gửi pull request dường 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 giá 1.4.2 sau khi điều này được khắc phục.

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

19

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

1

Người dùng Rails có thể bỏ qua thông báo này vì đây là lỗi Rails.

5

Một vấn đề đã đượ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 vấn đề được giải quyết.

EDIT: Sự cố này đã được giải quyết trong Rails 3.2.11.

17

Sự cố này đã được khắc phục trong Rails 3.2.11 vừa được phát hành.

Log: https://github.com/rails/rails/commits/v3.2.11

Commit: https://github.com/rails/rails/commit/95fe9ef945a35f56fa1c3ef356aec4a3b868937c

+0

Tôi nhận được lỗi này trong Rails 3.2.2 với Ruby 1.9.3 – Dreyfuzz

+1

@Dreyfuzz Lưu ý rằng 3.2.11 trễ hơn 3.2.2 (vì nó là 11, không phải 1.1). Vì vậy, việc nâng cấp Rails có thể khắc phục được sự cố của bạn. –

+0

Vâng, vì một lý do nào đó tôi bị mắc kẹt suy nghĩ theo ký hiệu thập phân, trong đó 3.2.2 cũng giống như 3.2.20. Nghĩ rằng tôi đã ở cạnh chảy máu ở đó trong một phút! – Dreyfuzz

16

ray 3.2.9 - ruby ​​1.9.3p125 (2012/02/16 sửa đổi 34.643) [i686-linux]

Xin chào tất cả mọi người, các sau đây đã làm việc cho tôi, nó có thể làm việc cho 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 nhất "số phiếu bầu", nhưng câu trả lời duy nhất ** thực sự ** giải quyết được vấn đề, mà không hạ cấp và gặp sự cố tương thích. Nó chỉ xóa thông điệp gây phiền nhiễu – Aleks

+1

Thay vì không vá mã vạch. Tôi nghĩ rằng điều này tốt hơ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 việc sửa đổi mã rails. – allenhwkim

+0

Cảm ơn bạn, điều này cũng làm việc cho tôi. –

3

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

+0

Không giải quyết cho tôi – coorasse