2009-06-20 26 views
34

Tôi truy cập diễn đàn sử dụng vBulletin 3.8. Khi tôi đăng nhập, tôi sử dụng firebug để xem cookie nào được đặt. Tôi nhìn thấy những cookie:Tại sao document.cookie không hiển thị tất cả cookie cho trang web?

__utmb, __utmc, __utma, __utmz, bbsessionhash, vbseo_loggedin, bbpassword, bbuserid, bblastactivity, bblastvisit

Tất cả họ đều có một tập giá trị, và tên miền là giống hệt nhau.

Nhưng khi tôi sử dụng Javascript để xem chúng, nó chỉ thấy những cookie:

__utmb, __utmc, __utma, __utmz, vbseo_loggedin, bblastactivity, bblastvisit

Trong firebug, tôi chỉ nhìn thấy ba cookie này: bbsessionhash, bbpasword và bbuserid, đã được thiết lập. HTTPChỉ trong cột HTTPChỉ. Điều đó có nghĩa là gì và đó là lý do tôi không thể thấy các cookie đó trong JavaScript bằng cách sử dụng document.cookie?

Trả lời

54

Từ http://en.wikipedia.org/wiki/HTTP_cookie:

Cookies không thể nhìn thấy trực tiếp đến chương trình client-side như JavaScript nếu họ đã được gửi đi với các HttpOnly cờ. Từ quan điểm của điểm của máy chủ, chỉ sự khác biệt đối với các trường hợp bình thường với là các thiết lập cookie tiêu đề dòng được thêm vào một lĩnh vực mới có chứa chuỗi `HttpOnly ':

Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.example.net; HttpOnly

Khi trình duyệt nhận được một cookie như vậy, nó được sử dụng như là thông thường trong các trao đổi HTTP sau, nhưng không hiển thị với các tập lệnh phía máy khách. Cờ HttpOnly không phải là một phần của bất kỳ tiêu chuẩn nào và không được triển khai trong tất cả các trình duyệt.

Cập nhật từ năm 2017: rất nhiều thời gian đã trôi qua kể từ năm 2009, và HttpOnly tiêu đề cờ trở thành một tiêu chuẩn, quy định tại các section 5.2.6 of RFC6265, với ngữ nghĩa lưu trữ được mô tả trong các tài liệu tương tự (tìm kiếm "http -only-flag "trong toàn bộ văn bản RFC).

không cách truy cập mọi thứ về HttpOnly cookie từ API "không phải HTTP", ví dụ: JavaScript. Bằng cách thiết kế, không đọc, cũng không viết các cookie như vậy là có thể.

+1

Nhưng có cách nào để truy cập các cookie đó bằng cách nào đó từ giao diện người dùng không? Tiện ích mở rộng của trình quản lý cookie Chrome đang hiển thị chúng, nhưng document.cookie thì không hiển thị chúng. –

+2

@SilverRingvee, xin lỗi nhưng không có. Nếu có cách nào đó, đó là lỗi bảo mật của trình duyệt (và một lỗi nghiêm trọng) cần được báo cáo và sửa lỗi. Các tiện ích mở rộng là các vấn đề khác nhau, mặc dù chúng có đặc quyền cao hơn trang web và có quyền truy cập vào các API được nâng cao (ví dụ: ['chrome.cookies.getAll' cho Chrome] (https://developer.chrome.com/extensions/cookies#method-getAll)) có thể xem tất cả cookie. – drdaeman

+0

@SilverRingvee, bạn có tìm thấy bất kỳ cách nào để truy cập cookie với cờ HTTPOnly không? –

Các vấn đề liên quan