What là một Cookie? Trạng thái trình duyệt, Bảo mật và Phạm vi

What là một Cookie? Trạng thái trình duyệt, Bảo mật và Phạm vi

API Scraping Universal không có rác nhận nội dung web công khai được phép và có thể render JavaScript khi Cookie phải được quan sát trong một phản hồi thực.

TL;DR

  • Cookie có một vai trò giao thức chính xác. Một cookie là một mục nhỏ tên-giá trị mà một máy chủ yêu cầu một tác nhân người dùng lưu trữ và trả lại với các yêu cầu sau đó phù hợp với phạm vi của nó.
  • Cookie phải được đọc ở lớp chính xác. Vận chuyển, đại diện, chính sách trình duyệt và ủy quyền ứng dụng vẫn là những mối quan tâm riêng biệt.
  • Các trung gian có thể thay đổi những gì một ứng dụng quan sát. Cổng, bộ nhớ đệm, mặc định trình duyệt và thư viện phía khách có thể thêm xử lý giữa các byte nguồn và dữ liệu đã phân tích.
  • Xác nhận cần bằng chứng nội dung. Một trạng thái hoặc trường đơn độc không chứng minh rằng đại diện công khai mong đợi đã đến.
  • Bảo mật phụ thuộc vào phạm vi và xác thực. Cú pháp giao thức không bao giờ cấp phép truy cập vào một tài nguyên hoặc tin tưởng vào một giá trị được cung cấp bởi người gọi.

What là Cookie?

Một cookie là một mục nhỏ tên-giá trị mà một máy chủ yêu cầu một tác nhân người dùng lưu trữ và trả lại với các yêu cầu sau đó phù hợp với phạm vi của nó. Các máy chủ tạo hoặc cập nhật cookies với các trường phản hồi Set-Cookie, trong khi các tác nhân người dùng gửi các giá trị áp dụng trong trường yêu cầu Cookie. Cookies thêm trạng thái vào các tương tác web, nhưng chúng không biến HTTP trở thành một giao thức có trạng thái.

Định nghĩa hữu ích bao gồm cả cơ chế và ranh giới của nó. Cookie ảnh hưởng đến một phần cụ thể của một giao dịch, trong khi trách nhiệm liền kề vẫn thuộc về HTTP, trình duyệt, vận chuyển đã chọn, ứng dụng hoặc mô hình dữ liệu của máy chủ. Giữ cho những lớp đó tách biệt giúp báo cáo lỗi có thể tái tạo và ngăn chặn việc thay đổi cấu hình bị hiểu nhầm là một quyết định kiểm soát truy cập.

Đối với các nhà phát triển API, câu hỏi đầu tiên là ai là người tạo ra giá trị hoặc hành vi. Câu hỏi tiếp theo là ai là người diễn giải nó. Câu hỏi cuối cùng là kết quả quan sát được nào chứng minh rằng việc diễn giải đã hoạt động. Ba câu trả lời đó biến một thuật ngữ từ điển thành một hợp đồng giao diện có thể kiểm tra.

Chu trình Lưu trữ và Trả về Cookie

Một phản hồi có thể chứa một hoặc nhiều trường Set-Cookie. Mỗi chỉ dẫn cung cấp một tên và giá trị cộng với các thuộc tính điều khiển miền, đường dẫn, tuổi thọ, bảo mật vận chuyển, truy cập script, hành vi giữa các trang, và phân vùng tùy chọn. Tác nhân người dùng đánh giá chỉ dẫn trước khi lưu trữ bất cứ điều gì.

Trong một yêu cầu sau đó, tác nhân người dùng chọn các cookie đã lưu trữ mà miền, đường dẫn, bảo mật, thời hạn và quy tắc cùng trang phù hợp với ngữ cảnh yêu cầu. Nó tuần tự hóa các cặp tên-giá trị đã chọn vào trường Cookie. Máy chủ sau đó ánh xạ các giá trị mờ đến trạng thái ứng dụng như một hồ sơ phiên hoặc sở thích.

Một giá trị cookie không tự động được mã hóa hoặc đáng tin cậy. Một khách hàng có thể thay đổi nhiều giá trị cookie, và bảo vệ mạng không chứng minh rằng dữ liệu ứng dụng là hợp lệ. Các máy chủ ký, mã hóa, hoặc tra cứu trạng thái nhạy cảm theo kiến trúc của họ và vẫn xác thực ủy quyền trên mỗi yêu cầu.

Việc xóa là một hoạt động Set-Cookie khác sử dụng cùng tên và phạm vi phù hợp với tuổi thọ đã hết hạn. Xóa một tên dưới Đường dẫn hoặc miền sai có thể để lại một cookie khác còn hoạt động, đó là lý do tại sao phạm vi là một phần của danh tính cookie trong thực tế.

Các Thuộc Tính Cookie và Công Việc của Chúng

Các thuật ngữ sau đây phân tách các thành phần thường bị gộp lại thành một nhãn. Đọc chúng như là các giao diện giữa các bên tham gia hơn là trang trí trong một dấu vết mạng.

Miền

Điều khiển mà máy chủ nào và các miền con đủ điều kiện có thể nhận cookie; sự thiếu vắng tạo ra một cookie chỉ dành cho máy chủ khắt khe hơn.

Đường dẫn

Hạn chế việc gửi đến các đường dẫn yêu cầu phù hợp với quy tắc đường dẫn đã lưu; đó là phạm vi điều hướng, không phải một ranh giới ủy quyền.

Hết hạn và Max-Age

Đặt tuổi thọ kéo dài. Max-Age có ưu tiên khi cả hai đều có mặt.

Bảo mật

Hạn chế truyền tải đến các ngữ cảnh vận chuyển an toàn, tùy thuộc vào các quy tắc của tác nhân người dùng.

HttpOnly

Ngăn chặn JavaScript trên tài liệu đọc giá trị trong khi cho phép trình duyệt gửi nó cùng với các yêu cầu phù hợp.

SameSite

Điều khiển xem cookie có được gửi trong nhiều ngữ cảnh yêu cầu giữa các trang hay không và hoạt động với các yêu cầu Bảo mật đối với None.

Tại sao Cookie Quan Trọng trong Việc Thu Thập Dữ Liệu Web

Cookie có thể thay đổi những byte nào đến, cách những byte đó được diễn giải, hoặc liệu mã trình duyệt có thể quan sát kết quả hay không. Một quy trình thu thập nên xác định hiệu ứng đó trước khi thay đổi công cụ. Ghi lại URL được yêu cầu, URL cuối, trạng thái phản hồi, loại đại diện, các trường giao thức liên quan, và một dấu hiệu nội dung mong đợi. Hồ sơ ngắn gọn đó phân biệt một trang chính xác khỏi một thông điệp truy cập, màn hình đồng ý, mục tiêu chuyển hướng, vỏ ứng dụng trống, hoặc mã hóa không tương thích.

HTTP trực tiếp là con đường thu thập đơn giản nhất khi dữ liệu cần thiết tồn tại trong một phản hồi do máy chủ mở render. Một trình duyệt trở nên liên quan khi nội dung được phê duyệt phụ thuộc vào việc thực thi JavaScript, trạng thái quản lý bởi trình duyệt, điều hướng, hoặc chính sách bảo mật trình duyệt. Hai con đường này không nên bị ép buộc phải trông giống nhau: trình duyệt quản lý cookies, nén, chuyển hướng, CORS, và lưu trữ theo các quy tắc nền tảng, trong khi một khách hàng trực tiếp phơi bày một bộ mặc định khác.

Tính liên tục của phiên quan trọng bất cứ khi nào một phản hồi thiết lập trạng thái cho yêu cầu tiếp theo. Giữ một chuỗi được ủy quyền trong một ngữ cảnh khách hàng giới hạn, bảo tồn vùng ngữ cảnh và nguồn mạng cần thiết, và tránh trộn lẫn trạng thái từ các công việc không liên quan. Một proxy thay đổi nguồn gốc mạng; nó không tái tạo tiêu đề, giải mã đại diện, thực thi script, hoặc cấp quyền truy cập vào nội dung hạn chế.

Phân tích chỉ bắt đầu sau khi xác thực đại diện. Xác nhận máy chủ cuối cùng, danh tính chuẩn, loại phương tiện, trạng thái giải mã và dấu hiệu kinh doanh cần thiết trước khi trích xuất các trường. Thứ tự này ngăn parser biến tài liệu lỗi thành các bản ghi trống có vẻ thành công về mặt kỹ thuật.

Các bên trung gian xứng đáng được chú ý rõ ràng. Mạng phân phối nội dung có thể chọn một biến thể đã mã hóa, cổng có thể trả lời OPTIONS, bộ nhớ cache có thể tái sử dụng phản hồi đã thương lượng và máy chủ ứng dụng có thể thiết lập cookie hoặc các trường xác thực. So sánh chỉ mã ứng dụng với đầu ra trang cuối cùng bỏ qua lớp có thể đã đưa ra quyết định.

API Ch scraping không có rác là có liên quan khi một nhóm cần truy xuất được quản lý các nội dung công khai cho phép, bao gồm các trang được render bằng JavaScript. Hợp đồng thu mua vẫn nên xác định mục tiêu, các trường cho phép, đại diện dự kiến, dấu hiệu chấp nhận và các điều kiện dừng. Khả năng sản phẩm không thay thế các điều khoản nguồn, rà soát quyền riêng tư hoặc xác thực cấp ứng dụng.

Những gì Cookies Thường Đại diện

Cookie chiếm một vị trí trong kiến trúc khi nó thay đổi hành vi sản phẩm cụ thể, yêu cầu tương thích hoặc quyết định chẩn đoán. Những trường hợp sử dụng này mô tả công việc trước tiên và tính năng giao thức sau.

Tra cứu phiên

Một định danh mờ có thể chỉ đến trạng thái phiên được xác thực phía máy chủ.

Sở thích

Một trang có thể nhớ ngôn ngữ địa phương, bố cục hoặc lựa chọn đồng ý trong một phạm vi phù hợp.

Trạng thái mua sắm

Một định danh giỏ hàng có thể kết nối các yêu cầu ẩn danh hoặc đã đăng nhập với các bản ghi phía máy chủ.

Trạng thái bảo mật

Một giá trị riêng biệt có thể hỗ trợ phòng ngừa giả mạo yêu cầu khi kết hợp với xác thực máy chủ.

Phân công thí nghiệm

Một định danh có giới hạn có thể giữ một người dùng trong một biến thể thử nghiệm được phê duyệt.

Liên tục trong quá trình thu thập

Một quy trình làm việc của trình duyệt được ủy quyền có thể giữ nguyên trạng thái đồng ý hoặc điều hướng trên các trang công khai liên quan.

Cookies So Sánh Với Lưu Trữ Trình Duyệt Khác

Cookie thuộc về một lớp của HTTP và không nên bị nhầm lẫn với các lớp liền kề. Một triển khai tốt xác định thành phần nào chọn giá trị, thành phần nào có thể thay đổi nó và bằng chứng nào chứng minh rằng đại diện cuối cùng là chính xác.

Kích thướcCookieKhái niệm liên quan hoặc thay thế
CookieTự động gửi trong các yêu cầu HTTP tương ứngCác phiên, sở thích, trạng thái liên quan đến CSRF
localStorageĐược đọc và ghi bởi script trang cho một nguồn gốcSở thích bền vững phía máy khách
sessionStorageCó phạm vi đến một nguồn gốc và phiên tab trình duyệtTrạng thái quy trình làm việc tạm thời của trang
IndexedDBCơ sở dữ liệu trình duyệt có cấu trúcDữ liệu ứng dụng ngoại tuyến lớn hơn
Cơ sở dữ liệu máy chủLưu trữ bên ngoài trình duyệtTài khoản và bản ghi phiên có thẩm quyền

Một so sánh chỉ hữu ích khi nó giữ nguyên ranh giới lớp. Hai cơ chế có thể tồn tại trong một yêu cầu, và việc thay thế một cái không tự động thay thế cái còn lại. Tài liệu hành vi đã chọn dưới dạng các đầu vào, đầu ra quan sát được, trạng thái thất bại và quyền sở hữu.

Những Lỗi Cookie Với Hệ Quả Bảo Mật

  • Đưa dữ liệu nhạy cảm vào các giá trị có thể đọc được. Bytes Cookie có thể bị lộ qua nhật ký, phần mở rộng, script hoặc sửa đổi phía khách tùy thuộc vào thuộc tính và thiết kế.
  • Sử dụng phạm vi Miền và Đường dẫn rộng. Một phạm vi rộng hơn gửi giá trị tới nhiều ngữ cảnh yêu cầu hơn mức cần thiết.
  • Xem SameSite như bảo vệ CSRF hoàn chỉnh. SameSite là một điều khiển; các ứng dụng vẫn cần các phương thức, nguồn gốc và phòng thủ token phù hợp với quy trình làm việc.
  • Quên HttpOnly trên các định danh phiên. Cookies xác thực có thể đọc kịch bản làm tăng tác động của lỗ hổng tiêm kịch bản.
  • Giả định Đường dẫn ngăn chặn quyền truy cập. Đường dẫn ảnh hưởng đến các quy tắc gửi nhưng không phân lập nội dung như một cơ chế ủy quyền.
  • Ghi lại đầy đủ các trường Cookie. Nhật ký hoạt động có thể trở thành một kho lưu trữ thông tin thứ hai trừ khi các giá trị được xóa.

Hầu hết các lỗi trở nên dễ chẩn đoán hơn sau khi xóa các giả định về những gì thư viện hoặc trình duyệt đã thực hiện tự động. Ghi lại một dấu vết tối thiểu, xóa bí mật và thay đổi một biến được kiểm soát tại một thời điểm. Mục tiêu là một giải thích ổn định về đại diện được trả về, không phải là một tập hợp các điều chỉnh tiêu đề không liên quan.

Một Dãy Gỡ lỗi Cookie

Dãy này hoạt động như một cuộc xem xét thiết kế trước khi ra mắt và như một chẩn đoán sản xuất sau khi hành vi thay đổi. Nó giữ bằng chứng giao thức liên kết với kết quả ứng dụng.

  1. Kiểm tra phản hồi Set-Cookie chính xác trong yêu cầu mà nên tạo trạng thái.
  2. Ghi lại tên và thuộc tính trong khi xóa giá trị khỏi ảnh chụp màn hình và nhật ký chia sẻ.
  3. Kiểm tra máy chủ, đường dẫn, sơ đồ, ngữ cảnh cùng miền và thời gian hết hạn cho yêu cầu sau.
  4. Sử dụng chế độ xem lưu trữ cookie của trình duyệt để xác nhận xem hướng dẫn có được chấp nhận hay không.
  5. Kiểm tra trường yêu cầu Cookie sau và xác nhận rằng tên mong đợi chỉ có mặt nơi dự kiến.
  6. Xác nhận máy chủ ánh xạ giá trị đến trạng thái hiện tại và không chấp nhận các bản ghi cũ hoặc không được ủy quyền.
  7. Xóa với cùng các thuộc tính phạm vi và xác nhận rằng không có cookie trùng lặp dưới một đường dẫn khác còn lại.

Kết thúc đánh giá bằng cách lưu một mẫu được chấp nhận nhỏ và một mẫu bị từ chối với cùng các quy tắc xóa. Các thay đổi trong tương lai có thể được so sánh với danh tính trang đã biết, các trường mong đợi và nội dung đã giải mã thay vì chỉ bộ nhớ hoặc ảnh chụp màn hình.

Bảo mật và Quan sát cho Cookie

Cookie tham gia vào một đường dẫn yêu cầu có thể vượt qua các trình duyệt, cổng, bộ nhớ đệm và máy chủ nguồn. Mỗi điểm nhảy nên chỉ chấp nhận các giá trị mà nó hiểu, giữ lại các trường cần thiết và tránh sao chép thông tin xác thực hoặc dữ liệu cá nhân vào nhật ký. Cú pháp giao thức không phải là ủy quyền.

Các bản ghi hoạt động nên ghi lại URL yêu cầu, URL cuối cùng, trạng thái, loại đại diện, tên các trường liên quan và một dấu hiệu nội dung giới hạn. Nội dung đầy đủ và giá trị thông tin xác thực hiếm khi cần thiết cho chẩn đoán hàng ngày và có thể tạo ra rủi ro giữ lại không cần thiết.

Hành vi của trình duyệt và hành vi HTTP trực tiếp là các bề mặt thử nghiệm khác nhau. CORS, lưu trữ cookie, giải nén tự động và xử lý chuyển hướng có thể được thực hiện bởi trình duyệt hoặc thư viện trước khi mã ứng dụng thấy kết quả. Ghi lại khách hàng và các mặc định của nó khi so sánh các bản chụp.

Tiêu chuẩn Định nghĩa Cookie

đặc tả cookie HTTP định nghĩa hành vi Cookie và Set-Cookie. Nguồn chính này sửa chữa từ vựng và ranh giới được sử dụng trong bài viết này, trong khi hành vi thực thi vẫn cần được quan sát trong khách hàng và triển khai đã chọn.

hướng dẫn cookie của MDN giải thích lưu trữ trình duyệt, tuổi thọ và thuộc tính bảo mật. Nguồn chính này sửa chữa từ vựng và ranh giới được sử dụng trong bài viết này, trong khi hành vi thực thi vẫn cần được quan sát trong khách hàng và triển khai đã chọn.

tài liệu tham khảo trường Set-Cookie tài liệu hành vi thuộc tính hiện tại. Nguồn chính này sửa chữa từ vựng và ranh giới được sử dụng trong bài viết này, trong khi hành vi thực thi vẫn cần được quan sát trong khách hàng và triển khai đã chọn.

hướng dẫn quản lý phiên OWASP liên kết các cài đặt cookie với bảo mật phiên. Nguồn chính này sửa chữa từ vựng và ranh giới được sử dụng trong bài viết này, trong khi hành vi thực thi vẫn cần được quan sát trong khách hàng và triển khai đã chọn.

Ranh giới Cookie

Một cookie là trạng thái được trình duyệt quản lý với phạm vi và tuổi thọ rõ ràng; các ứng dụng bảo mật giữ giá trị hẹp, xác thực nó phía máy chủ và tránh đối xử với thuộc tính lưu trữ như là ủy quyền.

Đưa quy tắc đó vào một bài kiểm tra chấp nhận. Trạng thái người tham gia nào gửi tín hiệu, người tham gia nào giải thích nó, trung gian nào có thể thay đổi đường dẫn và dấu hiệu nội dung nào chứng minh thành công. Điều này làm cho Cookie trở thành một phần của hệ thống có thể quan sát thay vì một nhãn được gắn vào sau khi xảy ra lỗi.

Sẵn sàng xác thực phản hồi web công khai?

Sử dụng Scrapeless Universal Scraping API để truy xuất nội dung công khai đã được phê duyệt và kiểm tra hợp đồng đại diện được mô tả trong hướng dẫn này.

Đăng ký ngay hôm nay và nhận $5 tín dụng miễn phíkhông yêu cầu thẻ tín dụng.

Nhận Tín dụng $5 của bạn →

Câu hỏi thường gặp

Cookies có được lưu trữ bởi máy chủ hay trình duyệt?

Cookies được lưu trữ bởi tác nhân người dùng sau khi máy chủ gửi Set-Cookie hoặc kịch bản cho phép tạo một cái. Máy chủ thường lưu trữ bản ghi phiên hoặc tài khoản chính thức được tham chiếu bởi giá trị cookie.

Một cookie có thể được đọc bởi JavaScript không?

Một cookie có thể được đọc qua document.cookie chỉ khi nó không được bảo vệ bởi HttpOnly và phạm vi của nó cho phép truy cập. Cookies HttpOnly vẫn được gửi tự động với các yêu cầu trùng khớp.

Điều gì làm cho một cookie là của bên đầu tiên hoặc bên thứ ba?

Nhãn bên đầu tiên hoặc bên thứ ba phụ thuộc vào mối quan hệ giữa trang của cookie và ngữ cảnh trang cấp cao nhất. Chính sách trình duyệt hiện đại có thể hạn chế hành vi cookie giữa các trang vượt quá các thuộc tính lưu trữ cơ bản.

Có Secure mã hóa giá trị cookie không?

Không. Secure giới hạn truyền tải đến các ngữ cảnh bảo mật; TLS bảo vệ kết nối. Giá trị cookie thì không tự động được mã hóa khi không hoạt động hoặc được coi là đáng tin cậy.

Một cookie được xóa như thế nào?

Một cookie được xóa bằng cách gửi một hướng dẫn Set-Cookie mới cho cùng tên và phạm vi khớp với Max-Age được thiết lập là zero hoặc một thời gian hết hạn trong quá khứ. Các đường dẫn hoặc miền trùng lặp phải được xử lý riêng biệt.

Tài liệu tham khảo