Cookie là gì? Trạng thái HTTP, Bảo mật, và Sự đồng ý

Cookie là gì?

Trình duyệt Agent Scrapeless cung cấp các phiên trình duyệt có thể giữ trạng thái cookie cho các luồng công việc điều hướng được ủy quyền.

Một cookie là một mục nhỏ dạng tên-giá trị mà một trình duyệt lưu trữ cho một trang web và có thể gửi kèm theo các yêu cầu HTTP sau này đến trang đó. Cookies giúp một máy chủ nhận ra một phiên tiếp tục, nhớ một sở thích, hoặc kết nối các yêu cầu liên quan. Cookie thường chứa một định danh thay vì toàn bộ hồ sơ tài khoản. Hành vi của nó phụ thuộc vào các thuộc tính giới hạn thời điểm và nơi mà trình duyệt gửi nó.

Cookies rất đơn giản ở cấp độ mạng nhưng dễ bị xử lý sai trong các ứng dụng và tự động hóa. Một phiên đã lưu có thể hữu ích; nó cũng có thể phơi bày một tài khoản nếu bị sao chép vào môi trường sai. Hướng dẫn này theo dõi một cookie từ phản hồi của máy chủ đến yêu cầu sau và giải thích các ranh giới quan trọng.

Cách một Trình duyệt Nhận và Gửi một Cookie

Một máy chủ có thể gửi một tiêu đề phản hồi Set-Cookie. Trình duyệt quyết định có lưu trữ cookie dưới các thuộc tính đã nêu hay không. Trong các yêu cầu khớp sau này, trình duyệt sẽ bao gồm các cookie áp dụng trong một tiêu đề yêu cầu Cookie. Hướng dẫn cookie MDN mô tả sự trao đổi này và các hành vi lưu trữ và phạm vi chính.

Một cookie không được gửi tự động đến mọi điểm đến. Các quy tắc Chủ nhà, Miền, Đường dẫn, Bảo mật và SameSite ảnh hưởng đến tính đủ điều kiện. Cài đặt quyền riêng tư của trình duyệt và thời hạn cũng có thể quan trọng. Khi một yêu cầu có vẻ như mất trạng thái đăng nhập, hãy kiểm tra xem trình duyệt có gửi cookie dự kiến hay không trước khi giả định rằng máy chủ đã loại bỏ phiên.

Máy chủ phải giải thích tên và giá trị nhận được. Một định danh phiên có thể cho phép máy chủ tra cứu trạng thái tài khoản, nhưng cookie tự nó không giải thích liệu phiên đó có còn hợp lệ hay không. Một trang web có thể thu hồi một phiên hoặc yêu cầu xác thực lại. Một hoạt động lưu trữ trình duyệt thành công không đảm bảo rằng máy chủ sẽ chấp nhận yêu cầu tiếp theo.

Phạm vi và Thời gian tồn tại của Cookie

Tên miền kiểm soát máy chủ hoặc tên miền phụ nào có thể nhận cookie, trong khi Đường dẫn hạn chế các đường dẫn yêu cầu mà cookie được gửi đến. Một cookie chỉ dành cho máy chủ hẹp hơn so với một cookie được chia sẻ một cách có chủ đích với các tên miền phụ. Tham khảo Set-Cookie chi tiết cách mà các thuộc tính này được diễn giải. Một giá trị Đường dẫn là một quy tắc gửi, không phải là một ranh giới bảo mật bảo vệ giá trị khỏi tất cả mã trên máy chủ.

Thời gian hết hạn có thể được biểu thị bằng Max-Age hoặc Expires. Nếu không có thông tin thời gian sống liên tục, một cookie thường là cookie phiên, mặc dù việc khôi phục phiên trình duyệt có thể ảnh hưởng đến thời điểm nó biến mất. Một ứng dụng không nên giả định rằng mọi trình duyệt đều đóng lại vào một thời điểm có thể dự đoán. Thời gian sống phiên phía máy chủ vẫn là một quyết định độc lập.

Để thay thế một cookie, một máy chủ thường gửi một giá trị mới với tên và phạm vi tương ứng. Để xóa nó, máy chủ có thể thiết lập một giá trị đã hết hạn với phạm vi tương thích. Một nhà phát triển xóa chỉ một cookie hiển thị có thể để lại một biến thể khác với một đường dẫn hoặc miền khác. Gỡ lỗi toàn bộ phạm vi và lịch sử phản hồi thay vì chỉ đoán từ tên cookie.

Thuộc tính bảo mật và giới hạn của chúng

Secure cho trình duyệt gửi cookie qua các kết nối an toàn. HttpOnly ngăn JavaScript thông thường trên trang đọc nó thông qua document.cookie, giảm một con đường cho việc đánh cắp token từ một cuộc tiêm mã. SameSite kiểm soát việc gửi trong các tình huống liên trang và có thể giúp giảm một số rủi ro giả mạo yêu cầu. The Hướng dẫn cookie bảo mật MDN khuyến nghị các cài đặt hạn chế phù hợp với mục đích của cookie.

Các thuộc tính này giải quyết những mối đe dọa khác nhau. HttpOnly không ngăn trình duyệt gửi cookie cùng với các yêu cầu đủ điều kiện. Secure không ủy quyền cho tài khoản được đại diện bởi giá trị của nó. SameSite không thay thế một biện pháp phòng ngừa giả mạo yêu cầu hoàn chỉnh cho mọi thiết kế ứng dụng. Các kiểm tra truy cập từ phía máy chủ và việc vô hiệu hóa phiên vẫn quan trọng sau khi cookie được gửi đi.

Không bao giờ công khai cookie phiên thực sự trong các ví dụ, nhật ký hoặc vé hỗ trợ. Một mã thông báo phiên có thể cho phép truy cập ngay cả khi các ký tự của nó trông vô nghĩa. Xóa giá trị khi ghi lại một dấu vết yêu cầu, và chỉ giữ lại các tên và thuộc tính cần thiết để chẩn đoán hành vi. Đối xử với lưu trữ hồ sơ trình duyệt như nhạy cảm nếu nó bao gồm trạng thái xác thực.

Cookies, CORS, và Yêu Cầu Chéo Trang

Yêu cầu giữa các trang liên quan đến cả chính sách cookie và chính sách đọc phản hồi của trình duyệt. SameSite có thể giữ một cookie không bị ảnh hưởng bởi yêu cầu, trong khi CORS có thể ngăn chặn kịch bản trang đọc một phản hồi. Đây là những kiểm tra riêng biệt. Một máy chủ có thể trả về tiêu đề CORS chính xác và vẫn thấy một người gọi không được xác thực vì không có cookie phiên nào được gửi.

Một cookie với SameSite=None cần Secure theo quy định của trình duyệt hiện tại. Lấy dữ liệu từ miền khác có chứng thực cũng cần một chế độ yêu cầu chứng thực thích hợp và phản hồi CORS máy chủ phù hợp. Trình duyệt không suy ra tất cả các thiết lập đó từ việc một cookie tồn tại. Kiểm tra nguồn gốc trang thực và mục tiêu, bao gồm cả các chuyển hướng, khi một tích hợp được cho là hoạt động trong một khách hàng HTTP trực tiếp nhưng thất bại trong trình duyệt.

Các hạn chế về cookie của bên thứ ba và cài đặt trình duyệt có thể thay đổi kết quả thêm. Tránh thiết kế một quy trình quan trọng quanh một cookie được gửi từ một trang không liên quan trừ khi kiến trúc và hỗ trợ trình duyệt đã được kiểm tra. Khi bạn sở hữu cả hai hệ thống, một trao đổi phía máy chủ hoặc thiết kế cùng trang có thể đơn giản hóa mô hình bảo mật.

Cookies trong Tự động hóa Trình duyệt

Một phiên tự động hóa trình duyệt duy trì trạng thái giữa các hành động trên trang. Trình duyệt đại lý không có rác cung cấp một môi trường trình duyệt từ xa, và nó tài liệu giới thiệu hoạt động dựa trên phiên. Cookies có thể giúp một quy trình được ủy quyền giữ đăng nhập trong khi nó di chuyển giữa các trang. Chúng nên được giới hạn cho tài khoản và nhiệm vụ được phê duyệt.

Một ngữ cảnh trình duyệt mới rất hữu ích khi một tác vụ không được thừa hưởng trạng thái của người dùng khác. Một hồ sơ liên tục hữu ích khi trạng thái được ủy quyền cần tồn tại qua các phiên, nhưng điều này nảy sinh câu hỏi về quyền truy cập và giữ lại. Liên quan đến hướng dẫn xác thực trình duyệt thảo luận về cách trạng thái đăng nhập có thể liên quan đến cookie và các bộ nhớ khác. Đừng giả định rằng việc xuất một cookie tái tạo toàn bộ phiên.

Khi một quy trình làm việc thấy nội dung khác nhau giữa các lần chạy, hãy so sánh tài khoản, hồ sơ trình duyệt, phạm vi cookie, URL cuối cùng và bất kỳ cài đặt vị trí nào. Một cookie có thể ảnh hưởng đến cá nhân hóa, nhưng một kết quả thiếu cũng có thể đến từ thời gian của trang hoặc một quyết định truy cập. Giữ cho các quan sát riêng biệt làm cho việc chẩn đoán có thể tái tạo và tránh xử lý không cần thiết các tài liệu phiên riêng tư.

Quyền riêng tư và Thiết kế Cookie Thực tế

Chỉ đặt cookie cần thiết cho một mục đích xác định và cho chúng một thời gian sống thích hợp. Một cookie phiên được sử dụng để xác thực một người dùng xứng đáng được bảo vệ mạnh mẽ hơn so với một sở thích giao diện vô hại. Giải thích việc theo dõi và lựa chọn đồng ý trong trải nghiệm quyền riêng tư của trang web nơi cần thiết. Một thuộc tính cookie kỹ thuật không phải là sự thay thế cho một quyết định sản phẩm về lý do tại sao dữ liệu được lưu giữ.

Đối với một dịch vụ bạn điều hành, hãy kiểm tra hành vi cookie trong đăng xuất, chuyển đổi tài khoản và các tình huống đa thiết bị. Một cookie biến mất từ trình duyệt không nhất thiết làm cho một phiên máy chủ không còn hiệu lực. Ngược lại, một phiên máy chủ hết hạn có thể để lại một cookie đã lưu không còn cấp quyền truy cập. Cả hai lớp cần một vòng đời hợp lý.

Đối với một dịch vụ bạn không điều hành, tránh thu thập hoặc sử dụng lại giá trị cookie của người khác. Tách trang công cộng hiếm khi cần trạng thái xác thực. Nếu một quy trình làm việc được ủy quyền yêu cầu đăng nhập, hãy giữ hồ sơ dưới quyền kiểm soát của tài khoản đó và tránh đặt giá trị mã thông báo trong các tập dữ liệu đã xuất hoặc các tệp chẩn đoán chia sẻ.

Khi Gỡ lỗi Cookie Cần Nhiều Hơn Một tiêu đề

Một bản truy dấu yêu cầu trình duyệt cho thấy liệu tiêu đề Cookie có được gửi hay không, nhưng nó không chứng minh được rằng lý do máy chủ chấp nhận hoặc từ chối nó là gì. Máy chủ có thể tra cứu một phiên hết hạn, yêu cầu một yếu tố bổ sung, hoặc áp dụng quyền tài khoản sau khi nhận dạng được định danh. Kết hợp bản truy dấu trình duyệt với một nhật ký máy chủ ủy quyền hoặc thông điệp ứng dụng khi điều tra một lỗi xác thực.

Cũng kiểm tra xem trang có dựa vào các bộ nhớ trình duyệt khác hay không. Bộ nhớ cục bộ, bộ nhớ phiên, và các mã thông báo trong bộ nhớ theo các quy tắc khác nhau so với cookie. Việc sao chép một tiêu đề Cookie vào một khách hàng khác do đó có thể không tái tạo được trang ngay cả khi cookie tự nó vẫn hợp lệ. Tái tạo quy trình làm việc tại ranh giới trạng thái trình duyệt chính xác trước khi tuyên bố cơ chế cookie bị hỏng.

Kết luận

Một cookie là trạng thái HTTP được quản lý bởi trình duyệt với phạm vi và thời gian sống xác định. Nó có thể hỗ trợ các phiên và sở thích, nhưng nó cũng mang lại trách nhiệm về bảo mật và quyền riêng tư. Đọc các thuộc tính của nó cùng với chính sách phiên của máy chủ và hành vi yêu cầu thực tế của trình duyệt.

Quản lý Trạng thái Trình duyệt Được Ủy quyền

Sử dụng các phiên Trình duyệt Đại lý với ranh giới tài khoản rõ ràng và kiểm tra trạng thái mà quy trình làm việc của bạn thực sự cần.

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

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

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

Một cookie có luôn chứa thông tin cá nhân không?

Không. Một cookie có thể lưu trữ một sở thích hoặc một định danh không rõ. Một định danh vẫn có thể nhạy cảm nếu nó liên kết với một cá nhân hoặc phiên được xác thực. Diễn giải mục đích của nó trong ngữ cảnh ứng dụng thay vì từ độ dài hoặc hình thức của nó.

Sự khác biệt giữa cookie phiên và cookie liên tục là gì?

Một cookie liên tục mang thời gian sống rõ ràng như Max-Age hoặc Expires. Một cookie phiên thiếu cài đặt liên tục đó, mặc dù việc phục hồi phiên trình duyệt có thể ảnh hưởng đến thời điểm nó biến mất. Tính hợp lệ phiên phía máy chủ là một quy tắc riêng.

HttpOnly có ngăn một cookie được gửi không?

Không. HttpOnly hạn chế JavaScript trang bình thường đọc cookie, nhưng trình duyệt vẫn có thể gửi nó trong các yêu cầu HTTP đủ điều kiện. Các quy tắc bảo mật, SameSite, miền, đường dẫn, và thời gian hết hạn cũng ảnh hưởng đến việc nó có được gửi hay không.

Một hồ sơ trình duyệt có thể lưu giữ trạng thái đăng nhập không?

Một hồ sơ trình duyệt có thể giữ cookies và trạng thái khác khi sản phẩm hỗ trợ tính liên tục, nhưng một đăng nhập hoạt động cũng phụ thuộc vào tính hợp lệ của phiên phía máy chủ. Lưu trữ hồ sơ chỉ cho các tài khoản được ủy quyền và bảo vệ chúng như những thông tin nhạy cảm tiềm năng.

Tài liệu tham khảo