Tạm biệt phiên ngắn – Đề xuất sử dụng trình chạy dịch vụ để cải thiện việc quản lý cookie trên web

William Denniss
Owen Campbell-Moore

Chúng tôi đều thích cách các ứng dụng gốc chỉ yêu cầu bạn đăng nhập một lần, sau đó ghi nhớ thông tin của bạn cho đến khi bạn thông báo rằng bạn muốn đăng xuất. Thật không may, không phải lúc nào web cũng hoạt động theo cách đó.

Giờ đây, các thiết bị, đặc biệt là thiết bị di động, mang tính cá nhân cao hơn và khi ngày càng có nhiều trang web gửi tất cả lưu lượng truy cập qua HTTPS để giảm nguy cơ bị đánh cắp mã thông báo, các trang web nên xem xét lại chính sách về cookie ngắn hạn và chuyển sang các phiên hoạt động dài hơn thân thiện hơn với người dùng.

Tuy nhiên, ngay cả khi bạn muốn kéo dài phiên, một số trang web không xác minh trạng thái xác thực của người dùng trong mỗi yêu cầu (nói cách khác, không có cách nào để thu hồi cookie của phiên sau khi phát hành). Điều này thường dẫn đến các phiên ngắn, trong đó người dùng bị buộc phải đăng nhập thường xuyên để có thể xác thực lại quy trình xác thực, cho phép thực hiện những việc như thay đổi mật khẩu vô hiệu hoá các phiên hiện có trong một khoảng thời gian đã biết.

Nếu đây là phương pháp mà bạn sử dụng, thì chúng tôi có một giải pháp kỹ thuật có thể giúp bạn tự động xác thực lại cookie xác thực không có trạng thái. Phương thức này hoạt động bằng cách có một mã thông báo phụ dài hạn có thể dùng để làm mới cookie xác thực ngắn hạn hiện có của bạn. Việc sử dụng mẫu trình chạy dịch vụ mới cho phép chúng tôi thường xuyên "kiểm tra" mã thông báo tồn tại trong thời gian dài, xác minh trạng thái xác thực của người dùng (ví dụ: kiểm tra xem gần đây có phải họ không thay đổi mật khẩu hay đã thu hồi phiên) rồi cấp lại cookie xác thực ngắn hạn mới.

Một đề xuất thiết thực để chuyển sang các phiên dài an toàn trên web

Từ đây, bài đăng này mô tả một kỹ thuật mới mà chúng tôi đề xuất gọi là 2-Cookie-handoff (2CH). Chúng tôi hy vọng có thể dùng bài viết này để thu thập ý kiến phản hồi của cộng đồng về việc liệu phương pháp này có tích cực hay không. Nếu có, thì chúng tôi có thể hợp tác với ngành để ghi nhận các phương pháp hay nhất khi sử dụng 2CH hay không.

Service worker là một công nghệ mới được nhiều trình duyệt như Chrome, Firefox, Opera hỗ trợ và sắp ra mắt trong Edge. Các thành phần này cho phép bạn chặn tất cả các yêu cầu mạng từ trang web của bạn thông qua một điểm mã chung trên ứng dụng mà không cần sửa đổi các trang hiện có. Điều này cho phép bạn thiết lập "trình chạy 2CH" cho những người dùng đã đăng nhập. Những người dùng này có thể chặn tất cả các yêu cầu mạng mà trang của bạn đang thực hiện và thực hiện việc hoán đổi mã thông báo giống như trên ứng dụng di động.

Trong hầu hết trường hợp, máy chủ của bạn đã có điểm cuối được các ứng dụng di động dùng để lấy mã thông báo ngắn hạn mới, thường là bằng giao thức OAuth. Để bật mẫu trên trên web, điểm cuối đó chỉ cần được cập nhật để hiểu khi nào được gọi bởi trình chạy dịch vụ, sau đó trả về một cookie phiên ngắn hạn mới được định dạng theo cách mà các trang khác trên trang web đã mong đợi.

Nếu chưa có điểm cuối như vậy, máy chủ của bạn có thể tạo một điểm cuối chỉ để quản lý phiên trình duyệt.

Trình tự 2 cookie-handoff

Mẫu 2 mã thông báo với trình chạy dịch vụ tuân theo mẫu OAuth 2.0 khá sát sao, nếu đã chạy một điểm cuối mã thông báo OAuth, thì bạn có thể sử dụng lại mẫu đó với trình chạy dịch vụ để xác thực web của mình.

Bạn cũng có thể muốn biết điều gì sẽ xảy ra nếu người dùng truy cập một trình duyệt không hỗ trợ trình chạy dịch vụ. Nếu bạn triển khai phương pháp trên, thì họ sẽ không gặp phải sự khác biệt nào và tiếp tục gặp phải các phiên ngắn.

Chúng tôi đã phát hành một ứng dụng và phần phụ trợ mẫu. Chúng tôi hy vọng bạn sẽ tự mình dùng thửtrả lời khảo sát về việc quản lý phiên.