Tiếng Việt

Công cụ dành cho nhà phát triển · Bộ giải mã JWT

JWT so với cookie phiên: Mã thông báo không trạng thái đã thay đổi xác thực web như thế nào

· Lý lịch

jwt xác thực web-security

Đường dẫn mã thông báo độc lập được so sánh với đường dẫn tra cứu phiên máy chủ
Hình minh họa vector ToolAcre gốc

Phiên phía máy chủ cai trị xác thực web trong nhiều năm trước khi JWT hứa hẹn không có trạng thái. Bài đăng này theo dõi sự thay đổi đó, cân nhắc chi phí mà nó đưa ra và mô tả các thiết kế kết hợp mà hầu hết các nhóm đều thực hiện.

Tại sao không chỉ sử dụng cookie phiên? — câu hỏi xứng đáng có câu trả lời thực sự trước khi áp dụng JWT

Trước khi áp dụng JWT, hãy hỏi xem phiên phía máy chủ không giải quyết được vấn đề gì. Việc thay thế giá trị cookie không rõ ràng bằng thông tin xác thực độc lập lớn sẽ thay đổi trách nhiệm thu hồi, tiết lộ và xác minh. Không quốc tịch là một trong số nhiều đặc tính chứ không phải là bản nâng cấp bảo mật hoặc khả năng mở rộng tự động.

ToolAcre có thể hiển thị những gì JWT thực hiện đối với mọi yêu cầu nhưng không thể so sánh thông lượng ứng dụng hoặc quy định kiến ​​trúc. Sử dụng kích thước được giải mã và các xác nhận quyền sở hữu làm bằng chứng, sau đó cân nhắc chúng với việc triển khai, mô hình mối đe dọa và cơ sở hạ tầng phiên hiện có của bạn.

Phiên phía máy chủ - ID mờ trong cookie trỏ đến trạng thái máy chủ và mô hình đó hoạt động tốt

Trong phiên phía máy chủ truyền thống, trình duyệt giữ một mã định danh mờ và máy chủ ánh xạ nó tới trạng thái hiện tại. Việc tra cứu đó cung cấp một nơi tự nhiên để kết thúc phiên, thay đổi đặc quyền và giữ lại dữ liệu khỏi máy khách. Nó cũng tạo ra trách nhiệm lưu trữ và sẵn có.

Cookie và phiên không phải là từ đồng nghĩa: cookie là vùng chứa vận chuyển, trong khi trạng thái tồn tại trên máy chủ. Tính bảo mật của nó phụ thuộc vào các thuộc tính, ranh giới nguồn gốc và hành vi ứng dụng. Id phiên trông ngẫu nhiên vẫn là thông tin xác thực mang theo và không được hiển thị một cách ngẫu nhiên.

Xác minh độc lập có thể làm giảm việc tra cứu phiên chia sẻ; nó không tự động tạo ra sự tin cậy giữa các dịch vụ

Mã thông báo độc lập cho phép máy chủ tài nguyên xác minh các byte và xác nhận quyền sở hữu được bảo vệ mà không cần tra cứu phiên chia sẻ theo mọi yêu cầu. Điều đó có thể phù hợp với các hệ thống phân tán, nhưng định dạng này không tạo ra sự tin cậy giữa nhiều dịch vụ. Các dịch vụ vẫn cần khóa của nhà phát hành đáng tin cậy, thuật toán được chấp nhận, chính sách đối tượng và hồ sơ mã thông báo tương thích.

ToolAcre không cung cấp mối quan hệ tin cậy nào trong số đó. Nó giải mã tiêu đề và tải trọng và báo cáo chữ ký là chưa được xác minh. Một dịch vụ bỏ qua cấu hình của chính nó chỉ thay thế phần phụ thuộc phiên trung tâm bằng một đường dẫn chấp nhận không an toàn.

Chi phí — thu hồi, kích thước mã thông báo trong mọi yêu cầu và vấn đề lưu trữ giữa cookie và lưu trữ web

Thông tin xác thực độc lập có thể lớn hơn vì các xác nhận quyền sở hữu và tài liệu mật mã được di chuyển nhiều lần. Việc thu hồi ngay lập tức trở nên khó khăn hơn trừ khi có trạng thái bên ngoài hoặc khoảng thời gian chấp nhận ngắn. Việc lưu trữ trong cookie, bộ nhớ trình duyệt hoặc bộ nhớ web sẽ thay đổi khả năng hiển thị thay vì loại bỏ nó.

Tải trọng có thể đọc được cũng có thể sao chép dữ liệu cá nhân hoặc dữ liệu ủy quyền trên nhật ký và bên trung gian. Giảm thiểu các khiếu nại và tránh coi việc mã hóa là bí mật. Mã nhận dạng phiên tiết lộ ít cấu trúc hơn nhưng hành vi trộm cắp vẫn có thể cấp quyền trong khi phiên vẫn hoạt động.

CSRF và XSS phụ thuộc vào các lựa chọn lưu trữ và vận chuyển thông tin xác thực chứ không chỉ đơn giản là JWT so với nhãn phiên

Rủi ro CSRF liên quan nhiều đến thông tin xác thực mà trình duyệt tự động đính kèm, trong khi XSS có thể tiết lộ dữ liệu và hành động có sẵn đối với tập lệnh trang. JWT trong cookie không ngừng tuân theo hành vi truyền tải cookie và số nhận dạng phiên trong bộ nhớ web không ngừng là bí mật mang tính bí mật.

Do đó, chỉ nhãn định dạng không thể chọn biện pháp bảo vệ. Mô hình nơi lưu trữ thông tin xác thực, ai có thể đọc chúng, thời điểm trình duyệt gửi chúng và cách bảo vệ các yêu cầu thay đổi trạng thái. Tránh tuyên bố đơn giản rằng một kiến ​​trúc “giải quyết CSRF” hoặc “giải quyết XSS”.

Ví dụ đã hoạt động - luồng đăng nhập tương tự được mô tả với các phiên và với JWT, từng bước một

Trong luồng phiên, đăng nhập sẽ thiết lập trạng thái máy chủ và trả về một mã định danh không rõ ràng; các yêu cầu sau đó sẽ hiển thị nó và máy chủ tải chính sách hiện tại. Trong luồng JWT, đăng nhập sẽ cấp mã thông báo được bảo vệ; các yêu cầu sau đó sẽ gửi giá trị lớn hơn và máy chủ tài nguyên sẽ xác minh giá trị đó cùng với các xác nhận quyền sở hữu có liên quan.

Đăng xuất có thể xóa bản sao trình duyệt trong cả hai luồng, nhưng việc vô hiệu hóa máy chủ ngay lập tức được gắn tự nhiên với trạng thái phiên và phải được thiết kế rõ ràng cho các mã thông báo độc lập. ToolAcre có thể hiển thị thời gian hết hạn và đối tượng đã được xác nhận của JWT, chứ không phải việc đăng xuất hay thu hồi có thực sự có hiệu lực hay không.

Thiết kế kết hợp vẫn yêu cầu chính sách làm mới, thu hồi và xác minh rõ ràng

Các thiết kế kết hợp có thể sử dụng mã thông báo truy cập bị giới hạn với quy trình làm mới trạng thái hoặc thông tin xác thực bên ngoài không rõ ràng chỉ có JWT giữa các dịch vụ được kiểm soát. Những cách tiếp cận này vận động nhà nước hơn là xóa bỏ nó. Chúng vẫn yêu cầu lưu trữ làm mới an toàn, xoay vòng khóa, hành vi thu hồi và kiểm tra chính sách.

Kho lưu trữ này không xác định thời gian tồn tại của mã thông báo chung hoặc công thức kết hợp nên bài viết này không cung cấp thông tin nào. Chọn khoảng thời gian và cơ chế từ rủi ro đã đo lường và các hạn chế vận hành, sau đó kiểm tra các kịch bản đăng xuất và mã thông báo bị đánh cắp thay vì dựa vào nhãn kiến ​​trúc.

Bài học rút ra: tình trạng không trạng thái là một sự trao đổi, không phải là một bản nâng cấp — nếu bạn chọn JWT, bộ giải mã ToolAcre JWT sẽ hiển thị nội dung mà mỗi mã thông báo mang theo trong mỗi yêu cầu

Không quốc tịch là một sự trao đổi, không phải là một sự nâng cấp. Các phiên máy chủ tập trung trạng thái hiện tại và việc thu hồi với chi phí tra cứu. Mã thông báo độc lập phân phối xác minh với chi phí bằng thông tin xác thực lớn hơn, xác nhận quyền sở hữu có thể đọc được và thiết kế vô hiệu rõ ràng hơn.

Nếu JWT phù hợp, hãy sử dụng ToolAcre để kiểm tra các ví dụ an toàn và hiểu nội dung của từng yêu cầu. Không coi màn hình của nó là bằng chứng xác thực hoặc ủy quyền. Kiến trúc chỉ thành công khi các trình xác minh đáng tin cậy, các lựa chọn lưu trữ và cơ chế thu hồi phù hợp với mô hình mối đe dọa.