Chúng tôi không thể tìm thấy kết nối internet
Đang cố gắng kết nối lại
Có lỗi xảy ra!
Hãy kiên nhẫn trong khi chúng tôi khắc phục sự cố
Tại sao JWT lại phổ biến?
0:07 JSON Web Tokens let your identity travel the web securely.
0:11 But like losing your passport, a stolen JWT gives hackers full access.
0:17 In this video, we'll unlock the immense potential of JWTs, and the dangers lurking within.
0:24 I'm Sahn, co-author of best-selling system design interview books. We explain
0:29 complex system design concepts clearly through animations. Let's get started.
0:34 JSON Web Tokens, commonly known as JWTs,
0:37 are a robust method for securely transmitting information between parties as JSON objects.
0:44 They have become a cornerstone in the world of web security for good reasons.
0:49 First, let's talk about JSON itself. It's a lightweight data interchange
0:53 format that's easy to read and write for humans and simple for machines to parse and generate.
0:59 It's the backbone of JWTs because it represents its payload,
1:03 which is where you store the data you want to transmit.
1:06 Now, JWTs have a structure of three parts: the header,
1:10 the payload, and the signature. Each section is base64 encoded and separated by a period.
1:17 The header typically consists of the token type,
1:20 which is JWT, and the algorithm being used, like HMAC SHA256 or RSA.
1:27 The payload of a JWT is where you store the claims.
1:30 Claims are statements about an entity, which is typically the
1:34 user with some additional data. There are three types of claims: registered, public,
1:40 and private. Registered claims are predefined, like the issuer, expiration time, and subject.
1:47 While JWT payloads can be encrypted using JSON Web
1:50 Encryption (JWE), most implementations use signed but not encrypted tokens.
1:56 This means that while the data is encoded, it is not encrypted and can be read if intercepted.
2:02 That’s why sensitive information should
2:05 never travel in a JWT payload unless it's encrypted first.
2:09 Let's talk about signing these tokens.
2:12 Signing is like sealing an envelope with a wax stamp to ensure it hasn't been tampered with.
2:17 There are two main types of signing algorithms:
2:20 Symmetric algorithms, like HMAC SHA256,
2:24 use a shared secret key for both signing and verification.
2:29 Asymmetric algorithms, such as RSA, use a public/private key pair where
2:34 the private key signs the token and the public key verifies it.
2:39 When choosing an algorithm, consider your needs. Symmetric keys are quick
2:43 and simple but the secret key must be shared between parties ahead of time.
2:48 Asymmetric keys allow verification of the creator without sharing private keys but are slower.
2:55 Signed JWTs provide authentication, authorization, and secure information exchange. Upon login,
3:03 the server creates a signed JWT with user details and sends it back. The client uses
3:09 this to access protected resources by sending the token in the HTTP header.
3:15 JWTs are commonly used in standards
3:17 like OAuth2 and OpenID Connect for authentication and authorization.
3:23 However, it's crucial to know when not to use JWTs. The payload is
3:27 not encrypted by default so should not contain highly sensitive data.
3:32 Also, JWTs aren't ideal for managing user sessions
3:36 since they are stateless. Revoking JWT access can be challenging.
3:41 Some common vulnerabilities to be aware of include token hijacking,
3:46 where an attacker steals a valid JWT to impersonate a user.
3:51 JWTs also could be vulnerable to cryptographic weaknesses if using
3:55 weak hashing algorithms. Automated brute force attacks may try to crack token signatures.
4:02 To mitigate risks when using JWTs, some best practices to follow are: keeping JWT payloads
4:09 compact with only the necessary user claims; using short token expiration times when possible;
4:16 storing tokens securely and invalidating any leaked tokens; and using strong signature
4:22 algorithms .
4:23 The pros are clear: JWTs are self-contained, portable,
4:27 and don’t require server-side storage. On the downside, JWTs can be vulnerable to theft,
4:33 and if intercepted, can provide full access to resources. The payload can
4:38 also get quite large if too much information is included, which can affect performance.
4:44 Overall, JWTs provide a scalable way to handle authentication, authorization,
4:50 and information exchange if implemented carefully.
4:56 If you like our videos, you might like our System Design newsletter, as well.
5:00 It covers topics in trends and large-scale system design.
5:04 Trusted by 500,000 readers.
5:07 Subscribe at blog.bytebytego.com.
0:07 JSON Web Tokens (JWT) giúp bạn mang danh tính của mình đi khắp thế giới web một cách an toàn. Nhưng cũng như mất hộ chiếu vậy, nếu JWT bị đánh cắp, tin tặc sẽ có toàn quyền truy cập vào mọi thứ.
0:17 Trong video này, chúng ta sẽ cùng nhau khám phá sức mạnh tiềm tàng của JWT, cũng như những nguy hiểm tiềm ẩn bên trong nó.
0:24 Tôi là Sahn, đồng tác giả của những cuốn sách bán chạy nhất về phỏng vấn thiết kế hệ thống. Chúng tôi sẽ giải thích những khái niệm thiết kế hệ thống phức tạp một cách dễ hiểu thông qua hình ảnh động. Bắt đầu thôi nào!
0:34 JSON Web Tokens, hay còn gọi là JWT, là một phương pháp hiệu quả để truyền tải thông tin một cách an toàn giữa các bên dưới dạng đối tượng JSON. Chúng đã trở thành nền tảng trong bảo mật web vì những lý do chính đáng.
0:49 Đầu tiên, hãy nói về JSON. Đây là một định dạng trao đổi dữ liệu gọn nhẹ, dễ đọc và viết đối với con người, đồng thời cũng dễ dàng để máy móc phân tích và tạo ra. Nó là xương sống của JWT, đại diện cho phần tải (payload), nơi bạn lưu trữ dữ liệu muốn truyền tải.
1:06 JWT có cấu trúc gồm ba phần: tiêu đề (header), phần tải (payload) và chữ ký (signature). Mỗi phần được mã hóa base64 và phân tách bằng dấu chấm.
1:17 Tiêu đề thường bao gồm loại token, là JWT, và thuật toán đang được sử dụng, ví dụ như HMAC SHA256 hoặc RSA.
1:27 Phần tải (payload) của JWT là nơi bạn lưu trữ các "claim" (khai báo). Claim là những tuyên bố về một thực thể, thường là người dùng, kèm theo một số dữ liệu bổ sung.
1:34 Có ba loại claim: đã đăng ký (registered), công khai (public) và riêng tư (private). Registered claim là những claim được xác định trước, ví dụ như người phát hành (issuer), thời gian hết hạn (expiration time) và chủ đề (subject).
1:47 Mặc dù phần tải của JWT có thể được mã hóa bằng JSON Web Encryption (JWE), nhưng hầu hết các triển khai đều sử dụng token đã ký nhưng không được mã hóa.
1:56 Điều này có nghĩa là dữ liệu được mã hóa, nhưng không được mã hóa theo nghĩa bảo mật, và có thể bị đọc nếu bị chặn. Đó là lý do tại sao thông tin nhạy cảm không bao giờ được truyền trong phần tải của JWT trừ khi nó đã được mã hóa trước.
2:09 Bây giờ, hãy nói về việc ký các token này. Việc ký giống như dán tem niêm phong lên phong bì để đảm bảo không ai có thể giả mạo nó.
2:17 Có hai loại thuật toán ký chính: Thuật toán đối xứng, như HMAC SHA256, sử dụng một khóa bí mật chung để vừa ký, vừa xác minh.
2:29 Thuật toán bất đối xứng, chẳng hạn như RSA, sử dụng một cặp khóa công khai/riêng tư, trong đó khóa riêng tư dùng để ký token, còn khóa công khai dùng để xác minh nó.
2:39 Khi chọn thuật toán, hãy cân nhắc nhu cầu của bạn. Khóa đối xứng nhanh chóng và đơn giản, nhưng khóa bí mật phải được chia sẻ trước giữa các bên. Khóa bất đối xứng cho phép xác minh người tạo mà không cần chia sẻ khóa riêng tư, nhưng lại chậm hơn.
2:55 JWT đã ký cung cấp xác thực, ủy quyền và trao đổi thông tin an toàn. Khi đăng nhập, máy chủ tạo một JWT đã ký chứa thông tin chi tiết của người dùng và gửi lại cho người dùng. Người dùng sử dụng token này để truy cập các tài nguyên được bảo vệ bằng cách gửi token trong header HTTP.
3:15 JWT thường được sử dụng trong các tiêu chuẩn như OAuth2 và OpenID Connect để xác thực và ủy quyền.
3:23 Tuy nhiên, điều quan trọng là phải biết khi nào không nên sử dụng JWT. Vì phần tải không được mã hóa theo mặc định, nên nó không nên chứa dữ liệu quá nhạy cảm.
3:32 Ngoài ra, JWT không lý tưởng để quản lý phiên người dùng vì chúng là stateless (không trạng thái). Việc thu hồi quyền truy cập JWT có thể là một vấn đề nan giải.
3:41 Một số lỗ hổng phổ biến cần lưu ý bao gồm token hijacking (chiếm đoạt token), khi kẻ tấn công đánh cắp một JWT hợp lệ để giả mạo người dùng. JWT cũng có thể dễ bị tấn công nếu sử dụng các thuật toán băm yếu. Các cuộc tấn công brute force tự động có thể cố gắng bẻ khóa chữ ký token.
4:02 Để giảm thiểu rủi ro khi sử dụng JWT, bạn nên tuân theo một số phương pháp sau: giữ cho phần tải của JWT nhỏ gọn, chỉ chứa những claim cần thiết của người dùng; sử dụng thời gian hết hạn token ngắn khi có thể; lưu trữ token một cách an toàn và vô hiệu hóa bất kỳ token nào bị rò rỉ; và sử dụng các thuật toán chữ ký mạnh mẽ.
4:23 Ưu điểm thì rất rõ ràng: JWT độc lập, di động và không yêu cầu lưu trữ phía máy chủ. Về nhược điểm, JWT có thể dễ bị đánh cắp, và nếu bị chặn, nó có thể cung cấp toàn quyền truy cập vào tài nguyên. Phần tải cũng có thể trở nên khá lớn nếu chứa quá nhiều thông tin, điều này có thể ảnh hưởng đến hiệu suất.
4:44 Nhìn chung, JWT cung cấp một cách có thể mở rộng để xử lý xác thực, ủy quyền và trao đổi thông tin nếu được triển khai một cách cẩn thận.
4:56 Nếu bạn thích video này, bạn cũng có thể thích bản tin System Design của chúng tôi.
5:00 Bản tin này bao gồm các chủ đề về xu hướng và thiết kế hệ thống quy mô lớn.
5:04 Được tin tưởng bởi 500.000 độc giả.
5:07 Đăng ký tại blog(dot)bytebytego(dot)com.
Dịch Vào Lúc: 2025-02-21T02:16:06Z
Phiên bản Dịch: 3.1 Improved translation step with full context