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 ta đều thích cách ứng dụng gốc yêu cầu bạn chỉ đăng nhập một lần và sau đó ghi nhớ 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, web không phải lúc nào cũng hoạt động theo cách đó.

Giờ đây, khi mà các thiết bị, đặc biệt là thiết bị di động, trở nên cá nhân hơn và khi có nhiều trang web gửi tất cả lưu lượng truy cập qua HTTPS giúp 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 cookie ngắn hạn và áp dụng các phiên tồn tại lâu hơn, thân thiện hơn với người dùng.

Tuy nhiên, ngay cả khi bạn muốn làm cho phiên kéo dài hơn, một số trang web không xác minh xác thực của người dùng cho 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 đưa ra). Điều này thường dẫn đến các phiên ngắn, trong đó người dùng buộc phải đăng nhập thường xuyên để có thể xác thực lại quá trình xác thực, cho phép những hành động 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 xác định.

Nếu đây là phương pháp 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. Mã thông báo này 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 ta thường xuyên "kiểm tra" với mã thông báo tồn tại lâu dài, xác minh xác thực của người dùng (ví dụ: kiểm tra xem gần đây họ có thay đổi mật khẩu hay thu hồi phiên không) và phát hành lại cookie xác thực ngắn hạn mới.

Một đề xuất thiết thực về việc di 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ể tham khảo bài viết này để lắng nghe ý 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ì hãy cùng các bên liên quan để ghi nhận các phương pháp hay nhất đối với việc sử dụng 2CH.

Trình chạy dịch vụ là một công nghệ mới được nhiều trình duyệt hỗ trợ, chẳng hạn như Chrome, Firefox, Opera và sắp ra mắt trên Edge. Loại mã này cho phép bạn chặn tất cả yêu cầu mạng từ trang web của bạn thông qua một điểm chung của mã trên ứng dụng mà không cần sửa đổi các trang hiện có. Thao tác 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. Trình thực thi này có thể chặn mọi yêu cầu mạng mà trang của bạn đang thực hiện và thực hiện hoán đổi mã thông báo giống như ứng dụng di động.

Thường thì máy chủ của bạn đã có một điểm cuối mà các ứng dụng dành cho thiết bị di động dùng để lấy mã thông báo tồn tại trong thời gian ngắn mới, thường là bằng giao thức OAuth. Để bật mẫu nêu trên trên web, bạn chỉ cần cập nhật điểm cuối đó để hiểu thời điểm trình chạy dịch vụ gọi, 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ự chuyển giao 2 cookie

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

Bạn cũng có thể tự hỏi điều gì sẽ xảy ra nếu người dùng truy cập vào 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, chúng sẽ không có gì khác biệt và tiếp tục gặp 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ẽ thử bản thântrả lời một khảo sát về tính năng quản lý phiên.