Cookie được mã hóa theo mặc định trong Rails 4
Trong Rails 4, cookie CookieStore được mã hóa và ký theo mặc định:
Nếu bạn chỉ secret_token
đặt, cookie của bạn sẽ được ký, nhưng không được mã hóa. Điều này có nghĩa là người dùng không thể thay đổi khóa của họ user_id
mà không biết khóa bí mật của ứng dụng của bạn, nhưng có thể dễ dàng đọc khóa của họ user_id
. Đây là mặc định cho các ứng dụng Rails 3.
Nếu bạn đã secret_key_base
đặt, cookie của bạn sẽ được mã hóa. Điều này tiến xa hơn một bước so với cookie đã ký ở chỗ người dùng không thể thay đổi hoặc đọc cookie được mã hóa. Đây là mặc định bắt đầu trong Rails 4.
Nếu bạn có cả hai secret_token
và secret_key_base
thiết lập, cookie của bạn sẽ được mã hóa và các cookie đã ký do Rails 3 tạo ra sẽ được đọc và mã hóa rõ ràng để cung cấp một đường dẫn nâng cấp suôn sẻ.
Lưu trữ phiên bản ghi hoạt động không được chấp nhận trong Rails 4
Câu trả lời này hiện đã lỗi thời đối với Rails 4. Active Record Session Store đã không còn được dùng nữa và bị xóa khỏi Rails, vì vậy các trình tạo sau sẽ không còn hoạt động:
Điều này đã được chỉ ra trong câu trả lời này . Lý do mà Active Record Session Store không được dùng nữa là do các lần đọc / ghi vào cơ sở dữ liệu không mở rộng quy mô tốt khi bạn có một số lượng lớn người dùng truy cập vào ứng dụng của mình, như đã nêu trong bài đăng trên blog này :
... một vấn đề chính với kho lưu trữ phiên Active Record là nó không thể mở rộng. Nó đặt một tải không cần thiết vào cơ sở dữ liệu của bạn. Một khi ứng dụng của bạn nhận được một lượng lớn lưu lượng truy cập, bảng cơ sở dữ liệu phiên liên tục bị bắn phá với các hoạt động đọc / ghi.
Kể từ Rails 4, kho lưu trữ phiên Active Record đã bị xóa khỏi khung cốt lõi và hiện không được dùng nữa.
Nếu bạn vẫn muốn sử dụng Active Record Session Store, nó vẫn có sẵn dưới dạng đá quý .
Các phương pháp hay nhất về phiên Rails hiện tại
Để biết thêm các phương pháp hay nhất hiện tại cho các phiên Ruby on Rails, tôi khuyên bạn nên xem các phiên bản mới nhất của Hướng dẫn bảo mật Ruby on Rails .