ไม่มีตัวเลือกลับสำหรับ Rack :: Session :: คำเตือนเรื่องคุกกี้?


110

ฉันใช้งาน Rails 3.2.3, Ruby 1.9 ภายใต้ Fedora 17 ฉันได้รับคำเตือนนี้เมื่อฉันวิ่งrails sและฉันจะแก้ไขได้อย่างไร?

คำเตือนด้านความปลอดภัย: ไม่มีตัวเลือกลับให้กับ Rack :: Session :: Cookie สิ่งนี้ก่อให้เกิดภัยคุกคามด้านความปลอดภัย ขอแนะนำอย่างยิ่งให้คุณระบุความลับเพื่อป้องกันการหาประโยชน์ที่อาจเกิดขึ้นจากคุกกี้ที่สร้างขึ้น สิ่งนี้จะไม่ได้รับการสนับสนุนใน Rack เวอร์ชันอนาคตและเวอร์ชันในอนาคตจะทำให้คุกกี้ผู้ใช้ที่มีอยู่ของคุณเป็นโมฆะด้วยซ้ำ


1
ค่าที่กำหนดใน config / initializers / secret_token.rb หรือไม่
Kashyap

Kashyap - ใช่มีการตั้งค่า
bigdaveyl

ฉันได้รับคำเตือนเหมือนกันหลังจากอัปเกรด Rails จาก 3.2.9 เป็น 3.2.10
AlexD

2
อันที่จริงคำเตือนนี้ถูกเพิ่มไปยัง Rack 1.4.2 ซึ่งเผยแพร่บน rubygems.org เมื่อวานนี้ (6 ม.ค. 2556) แต่การกระทำจริงเสร็จสิ้นเมื่อวันที่ 18 มีนาคม 2555
AlexD

ใช่วันนี้ฉันก็ได้รับคำเตือนเช่นกัน
Paritosh Piplewar

คำตอบ:


86

นี่เป็นข้อบกพร่องของ Rails เนื่องจากคลาสย่อยละเมิดสัญญา superclass API

ผู้ใช้ Rails สามารถเพิกเฉยต่อคำเตือนได้อย่างปลอดภัย

( https://github.com/rack/rack/issues/485#issuecomment-11956708เน้นเพิ่ม)

การยืนยันการอภิปรายข้อผิดพลาดของราง: https://github.com/rails/rails/issues/7372#issuecomment-11981397


4
อัปเดตอัญมณีรางของคุณเนื่องจากจะถูกส่งกลับไปยังอัญมณีรางที่รองรับทั้งหมด note @ henrik-n
shadowbq

19

เมื่ออ่านการอภิปรายตามคำตอบของ tehgeekmeisters คำเตือนนี้จะปรากฏขึ้นเนื่องจาก Rails ใช้คุกกี้ของชั้นวางในลักษณะที่แตกต่างจากที่ตั้งใจไว้ ควรเพิกเฉยต่อคำเตือนนี้ไปก่อนจนกว่าจะมีข้อตกลงขั้นสุดท้ายเกี่ยวกับวิธีจัดการปัญหานี้และแนวทางแก้ไข


17

ปัญหานี้ได้รับการแก้ไขแล้วใน Rails 3.2.11 ที่เพิ่งเปิดตัว

บันทึก: https://github.com/rails/rails/commits/v3.2.11

คอมมิต: https://github.com/rails/rails/commit/95fe9ef945a35f56fa1c3ef356aec4a3b868937c


1
@Dreyfuzz โปรดทราบว่า 3.2.11 ช้ากว่า 3.2.2 (เนื่องจากเป็น 11 ไม่ใช่ 1.1) ดังนั้นการอัปเกรด Rails อาจช่วยแก้ปัญหาของคุณได้
Henrik N

ใช่ด้วยเหตุผลบางอย่างฉันติดอยู่กับการคิดในรูปแบบทศนิยมโดยที่ 3.2.2 เหมือนกับ 3.2.20 คิดว่าฉันตกเลือดที่นั่นสักครู่!
Dreyfuzz

16

ราง 3.2.9 - ทับทิม 1.9.3p125 (2012-02-16 แก้ไข 34643) [i686-linux]

สวัสดีทุกคนสิ่งต่อไปนี้ได้ผลสำหรับฉันอาจได้ผลสำหรับคุณ


/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
นี่คือคำตอบที่มี "โหวตเพิ่ม" น้อยที่สุด แต่เป็นคำตอบเดียวที่แก้ปัญหาได้จริงโดยไม่ต้องลดระดับและมีปัญหาด้านความเข้ากันได้ มันเป็นการล้างข้อความที่น่ารำคาญ
Aleks

1
แทนที่จะไม่ปะรหัสราง ฉันคิดว่าสิ่งนี้ดีกว่าที่จะแก้ไขในรุ่นนี้ การอัปเกรดเป็น 3.2.11 จะดีกว่าการแก้ไขรหัสราง
allenhwkim

6

การดาวน์เกรดเป็นแร็ค 1.4.1 น่าจะเพียงพอที่จะแก้ปัญหานี้ได้ในตอนนี้ มีปัญหาสำหรับเรื่องนี้และฉันเพิ่งส่งคำขอดึงที่ดูเหมือนจะแก้ไขให้ฉัน ไม่ว่าในกรณีใดโปรดดูปัญหาและคุณควรจะสามารถอัปเกรดเป็นแร็ค 1.4.2 ได้หลังจากแก้ไขแล้ว

เห็นได้ชัดว่ามีการอภิปรายอย่างต่อเนื่องเกี่ยวกับวิธีการแก้ไขปัญหานี้อีกปัญหา คุณจะต้องดาวน์เกรดเป็น 1.4.1 ละเว้นหรือคิดหาวิธีแก้ไขของคุณเองจนกว่าจะได้รับการจัดการ (และย้อนกลับหากยังเกิดขึ้น)


5

ปัญหาที่ได้รับการเปิดใน Github https://github.com/rails/rails/issues/8789 ดูเหมือนว่ามีข้อผิดพลาดเกี่ยวกับ Rails 3.2.10 กับ Rack 1.4.2 ทำให้เกิดปัญหานี้ IMO สามารถละเว้นได้อย่างปลอดภัยจนกว่าปัญหาจะได้รับการแก้ไข

แก้ไข : ปัญหานี้ได้รับการแก้ไขแล้วใน Rails 3.2.11


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.