API Security · 35–50 phút · API

: claims, signature & validation

Hiểu là format signed token phổ biến và validation phải kiểm tra signature, algorithm, issuer, audience và thời gian.

SAU BÀI NÀY ÔNG SẼ
  • Giải thích : claims, signature & validation bằng ngôn ngữ của chính mình
  • Dùng để tách quan sát khỏi kết luận
  • Hoàn thành lab : claims, signature & validation an toàn và nêu được /
LÀM CÙNG NHAU · SAFE LAB

Làm cùng nhau: đọc được không đồng nghĩa tin được

Tách payload hiển thị được khỏi quyết định trust ở server.

  1. Bước 1: Nhìn `role: "student"` trong payload synthetic.

    Kết quả cần thấy: Bạn có thể đọc vì payload là representation, không phải .

    Vì sao: Đọc được dữ liệu giúp debug, nhưng không thay thế validation.

    Đừng nhầm: Đừng đặt password, key hoặc thông tin riêng tư vào payload chỉ vì nó “trông mã hóa”.

  2. Bước 2: Đọc danh sách `algorithms: ["RS256"]` trong ví dụ verify.

    Kết quả cần thấy: Server giới hạn thuật toán được chấp nhận thay vì tin token tự chọn.

    Vì sao: Validation phải là policy của server, không do client/token định nghĩa.

    Đừng nhầm: Không chỉ kiểm tra chữ ký mà quên expiry, issuer và audience.

  3. Bước 3: Dự đoán kết quả khi audience của token khác `training-app`.

    Kết quả cần thấy: Server phải từ chối token dù chữ ký có thể vẫn hợp lệ.

    Vì sao: Token hợp lệ cho ứng dụng A chưa chắc được dùng cho ứng dụng B.

    Đừng nhầm: Không dùng token thật từ browser hoặc ứng dụng của người khác trong bài tập.

01

Bức tranh lớn

Hiểu là format signed token phổ biến và validation phải kiểm tra signature, algorithm, issuer, audience và thời gian. Chủ đề này quan trọng vì thường có .payload.signature; payload chỉ encoded, không encrypted mặc định. Tin trước khi verify signature là lỗi thiết kế. Khi đi , hoặc , phần khó thường không phải nhớ tên công cụ mà là nhận ra mô hình này trong một biến thể mới. Ở và web hiện đại, client không phải nguồn sự thật. Server phải xác thực identity, cho từng object/action, validate input và giữ nghiệp vụ dù request đến từ browser, mobile app hay script. Với , test theo identity và object: cùng endpoint nhưng đổi subject/object/action để xem server có enforce policy ở phía server hay không. Trước khi sang phần tiếp theo, hãy tự nói lại chủ đề “: claims, signature & validation” bằng hai câu: hệ thống đang cố làm gì, và quyết định nào có thể tạo ra rủi ro nếu sai.

02

Mental model & từ khóa

thường có .payload.signature; payload chỉ encoded, không encrypted mặc định. Tin trước khi verify signature là lỗi thiết kế. Các thuật ngữ trọng tâm của bài là: , , signature, issuer, audience. Hãy liên kết chúng với luồng dữ liệu và quyết định bảo mật thay vì học định nghĩa rời rạc. Các từ khóa cần nối thành một mô hình duy nhất gồm: , , signature, issuer, audience. Đừng học chúng như flashcard rời rạc. Hãy chỉ ra dữ liệu đi từ đâu tới đâu, thành phần nào giữ state, thành phần nào ra quyết định và đâu là . Khi mô hình đúng, bạn có thể dự đoán một thay đổi nhỏ sẽ làm output thay đổi thế nào. thường có .payload.signature; payload chỉ encoded, không encrypted mặc định.

verify(token, publicKey, {
  algorithms: ["RS256"],
  issuer: "https://training.local",
  audience: "training-app",
});
03

Quy trình quan sát có kiểm chứng

Trong lab, decode token synthetic, đọc exp/iss/aud/role và so policy validator. Không dùng token thật. Luôn bắt đầu bằng expected behavior rồi mới tìm deviation; như vậy bạn biết mình đang chứng minh điều gì. Trong lab, decode token synthetic, đọc exp/iss/aud/role và so policy validator. Không dùng token thật. Bắt đầu bằng expected behavior và một sạch. Sau đó chỉ thay một biến, ghi input/output, timestamp hoặc state cần thiết rồi lặp lại để loại trừ ngẫu nhiên. Nếu tool đưa ra một nhãn như “open”, “vulnerable”, “failed” hay “suspicious”, quay về field thô tạo ra nhãn đó và xác minh bằng cách thứ hai. Đây là thói quen giúp tránh và cũng giúp report tái hiện được.

04

Case lab: từ dữ kiện tới kết luận

Phân tích 5 synthetic và xác định token nào bị validator thiếu kiểm tra issuer/audience/expiration. Đây là tình huống tổng hợp trong lab của khóa học, không dùng target thật. Bài thực hành trọng tâm là: Phân tích 5 synthetic và xác định token nào bị validator thiếu kiểm tra issuer/audience/expiration. Khi làm, chia note thành bốn cột: FACT (thấy trực tiếp), HYPOTHESIS (giả thuyết), TEST (thay đổi nào sẽ phân biệt các giả thuyết) và RESULT (kết quả). Sau khi có đáp án, tạo ít nhất hai biến thể: đổi identity/context và đổi input/state. Nếu kết luận vẫn đứng vững qua các biến thể, bạn mới có confidence cao hơn.

05

Bẫy tư duy & cách tự debug

Lỗi hay gặp là nhìn thấy một tín hiệu rồi gắn ngay nhãn vulnerability hoặc dùng công cụ trước khi hiểu hệ thống. Với chủ đề này, hãy nhớ: Payload không mặc định bí mật; trust chỉ sau khi validation đầy đủ. Với bài này, mệnh đề phải giữ là: Payload không mặc định bí mật; trust chỉ sau khi validation đầy đủ. Nếu bị kẹt, đừng tăng số lượng command/payload một cách mù quáng. Quay lại , thu hẹp câu hỏi, kiểm tra assumptions và đọc error/output theo từng lớp. Trong lab hoặc , đặt rồi đổi hướng khi không có mới; trong /, luôn kiểm tra trước khi mở rộng bề mặt thử nghiệm.

06

Phòng thủ, & tiêu chí qua bài

Pin algorithm hợp lệ, verify key/issuer/audience/exp, rotate key và tránh nhét vào payload. Khi review fix, kiểm tra cả positive case, negative case và một biến thể gần kề để tránh vá đúng một chuỗi kiểm thử. Một tốt phải chỉ ra root cause, control đặt ở đúng và cách . Hãy kiểm tra positive case hợp lệ, negative case bị từ chối và ít nhất một biến thể gần kề để tránh “vá đúng payload”. Bạn có thể coi mình qua bài khi: (1) giải thích : claims, signature & validation không nhìn tài liệu; (2) dự đoán được một output mới; (3) hoàn thành lab bằng ; (4) nêu được cách phòng thủ; và (5) phân biệt được observation với conclusion.

THỰC HÀNH AN TOÀN · GUIDED

Bài tập

Phân tích 5 synthetic và xác định token nào bị validator thiếu kiểm tra issuer/audience/expiration. Deliverable: lập ma trận subject × action × object cho case, lưu ít nhất một hợp lệ và một negative case, rồi chỉ ra phải enforce phía server. Kết thúc bằng với identity hoặc object khác để kiểm tra variant.

Gợi ý: Đừng tìm đáp án ngay. Với : claims, signature & validation, ghi trước, thay đúng một biến rồi giải thích vì sao output đổi hoặc không đổi.
safe-terminal · /home/student/lab
MEMORY ONLY
WhiteHat Safe Terminal v2 · MEMORY-ONLY SIMULATOR · gõ help để bắt đầu.
$
KNOWLEDGE CHECK · CẦN 80%

5 câu kiểm tra

Không trừ điểm. Mục tiêu là giải thích được lý do, không phải đoán đúng.

Câu 1/5

Phát biểu nào đúng nhất về : claims, signature & validation?

Câu 2/5

Trong một lab về “: claims, signature & validation”, nào phù hợp nhất để bắt đầu kiểm chứng?

Câu 3/5

Control/ nào bám sát chủ đề “: claims, signature & validation” nhất?

Câu 4/5

Mental model nào nên giữ khi gặp một biến thể mới của “: claims, signature & validation”?

Câu 5/5

Nếu bài “: claims, signature & validation” cần thao tác có tính offensive, môi trường nào phù hợp?

PROGRESS

Đánh dấu hoàn thành

Cần đạt ít nhất 80% quiz trước khi chốt bài.