Cờ “Bảo mật” của cookie hoạt động như thế nào?


101

Tôi biết rằng cookie có securegắn cờ sẽ không được gửi qua kết nối không được mã hóa. Tôi tự hỏi làm thế nào điều này hoạt động chuyên sâu.

Ai chịu trách nhiệm xác định xem cookie sẽ được gửi đi hay không?

Câu trả lời:


91

Máy khách đặt điều này chỉ cho các kết nối được mã hóa và điều này được định nghĩa trong RFC 6265 :

Thuộc tính Secure giới hạn phạm vi của cookie đối với các kênh "an toàn" (trong đó "an toàn" được xác định bởi tác nhân người dùng). Khi cookie có thuộc tính Secure, tác nhân người dùng sẽ chỉ đưa cookie vào một yêu cầu HTTP nếu yêu cầu được truyền qua một kênh bảo mật (thường là HTTP qua Bảo mật lớp truyền tải (TLS) [RFC2818]).

Mặc dù có vẻ hữu ích để bảo vệ cookie khỏi những kẻ tấn công mạng đang hoạt động, thuộc tính Secure chỉ bảo vệ tính bí mật của cookie. Kẻ tấn công mạng đang hoạt động có thể ghi đè Cookie bảo mật từ một kênh không an toàn, làm gián đoạn tính toàn vẹn của chúng (xem Phần 8.6 để biết thêm chi tiết).


4
trong trường hợp phía máy khách chưa có cookie và chúng sẽ được gửi từ phía máy chủ (ví dụ: đăng nhập) thì phía máy chủ sẽ là người quyết định đưa cookie vào phản hồi?
ted

2
Máy chủ ban đầu đặt cookie qua "Tiêu đề Set-Cookie"
Ivan

49

Chỉ một từ khác về chủ đề này:

Bỏ qua securevì trang web của bạn example.comcó đầy đủ https là không đủ.

Nếu người dùng của bạn đang tiếp cận một cách rõ ràng http://example.com, họ sẽ được chuyển hướng đến https://example.comnhưng đã quá muộn rồi; yêu cầu đầu tiên chứa cookie.


6
Tôi biết điều này đã cũ, nhưng tải trước HSTS giúp giải quyết tình trạng này bằng cách ngăn sự cố này xảy ra thường xuyên. Nó vẫn không phải là bản sửa lỗi 100% nhưng nó chỉ là một điều khác cần xem xét nếu bạn thực sự muốn tránh cookie an toàn.
Mr. MonoChrome

5
@ Mr.MonoChrome Tại sao bạn muốn tránh cookie an toàn?
MEMark

@ Mr.MonoChrome mặc dù một số trình duyệt đặc tả cũ hoặc thấp hơn, tôi tin rằng, thậm chí không hỗ trợ HSTS
Oldboy

1
Điểm tốt. Đối với các ứng dụng .NET, tốt hơn là nên thực hiện chuyển hướng trong IIS (hoặc web.config) thay vì theo chương trình (ví dụ:
perfals.asax

Vì vậy, nếu bạn không chuyển hướng từ http sang https và chỉ phân phát trên https, bạn sẽ không cần secure?
braks
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.