: , & context
Hiểu là vấn đề dữ liệu không tin cậy đi vào context thực thi/markup nguy hiểm, không chỉ là “script tag”.
- ✓ Giải thích : , & context bằng ngôn ngữ của chính mình
- ✓ Dùng và để tách quan sát khỏi kết luận
- ✓ Hoàn thành lab : , & context an toàn và nêu được /
Làm cùng nhau: lần theo tới
Đánh giá đường đi dữ liệu bằng marker vô hại trong lab.
- Bước 1: Đánh dấu `getComment()` là vì comment đến từ người dùng trong ví dụ.
Kết quả cần thấy: Bạn có một điểm xuất phát để kiểm tra, chưa có kết luận về lỗi.
Vì sao: Nhiều dữ liệu người dùng là hợp lệ; rủi ro phụ thuộc nơi nó kết thúc.
Đừng nhầm: do người dùng ảnh hưởng không tự động là vulnerability.
- Bước 2: Đọc `preview.textContent = comment`.
Kết quả cần thấy: Comment xuất hiện như chữ, nên browser không diễn giải nó như mới.
Vì sao: Safe phù hợp context text là một cách cắt đường .
Đừng nhầm: Không suy ra tất cả khác đều an toàn; attribute, URL và context có quy tắc khác.
- Bước 3: Viết negative test bằng câu có dấu `<` trong sandbox.
Kết quả cần thấy: Dấu `<` hiển thị nguyên văn; không có element mới xuất hiện trong .
Vì sao: Expected result phải chứng minh control hoạt động mà không cần hành vi có hại.
Đừng nhầm: Không dùng hoặc dữ liệu cá nhân để “chứng minh impact”; luôn tối thiểu hóa dữ liệu.
Bức tranh lớn
Hiểu là vấn đề dữ liệu không tin cậy đi vào context thực thi/markup nguy hiểm, không chỉ là “script tag”. Chủ đề này quan trọng vì Reflected/stored/ khác đường nhưng đều cần xem , transform, và context. Encoding phải phù hợp attribute, text, URL hoặc JS context. 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. Ở Web Security Core, dùng bộ ba subject → action → object cộng với . Tạo hợp lệ, đổi đúng một biến rồi so sánh response, state và side effect; tránh săn payload trước khi hiểu decision mà server phải thực hiện. Luôn giữ một request và đánh dấu method, path, query, , , body, status, redirect và side effect. Đừng chỉ nhìn cuối cùng. Trước khi sang phần tiếp theo, hãy tự nói lại chủ đề “: , & context” 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.
Mental model & từ khóa
Reflected/stored/ khác đường nhưng đều cần xem , transform, và context. Encoding phải phù hợp attribute, text, URL hoặc JS context. Các thuật ngữ trọng tâm của bài là: , , , context, CSP. 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: , , , context, CSP. Đừ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. Reflected/stored/ khác đường nhưng đều cần xem , transform, và context.
const comment = getComment();
preview.textContent = comment; // data hiện thành chữ
// Với HTML do server render: dùng auto-escaping của template engine.Quy trình quan sát có kiểm chứng
Trong sandbox local, so textContent với innerHTML và quan sát . Chứng minh bằng marker vô hại thay vì đánh cắp . 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 sandbox local, so textContent với innerHTML và quan sát . Chứng minh bằng marker vô hại thay vì đánh cắp . 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.
Case lab: từ dữ kiện tới kết luận
Phân tích 5 → chain giả lập, đánh dấu chain nguy hiểm và chọn fix đúng context. Đâ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 → chain giả lập, đánh dấu chain nguy hiểm và chọn fix đúng context. 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.
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ớ: phải được phân tích theo , và output context; không chỉ tìm chuỗi script. Với bài này, mệnh đề phải giữ là: phải được phân tích theo , và output context; không chỉ tìm chuỗi script. 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.
Phòng thủ, & tiêu chí qua bài
Auto-escaping, context-aware encoding, safe APIs, CSP như defense-in-depth và giảm dangerous sinks. 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 : , & context 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.
Bài tập
Phân tích 5 → chain giả lập, đánh dấu chain nguy hiểm và chọn fix đúng context. Deliverable: lưu request/response, đánh dấu chính xác field bạn thay đổi, ghi response/status/state sau thay đổi và kết luận server đã ra quyết định ở đâu. Sau đó mô tả một control phía server và một negative test dùng để control đó.
WhiteHat Safe Terminal v2 · MEMORY-ONLY SIMULATOR · gõ help để bắt đầu.
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.
Phát biểu nào đúng nhất về : , & context?
Trong một lab về “: , & context”, nào phù hợp nhất để bắt đầu kiểm chứng?
Control/ nào bám sát chủ đề “: , & context” nhất?
Mental model nào nên giữ khi gặp một biến thể mới của “: , & context”?
Nếu bài “: , & context” cần thao tác có tính offensive, môi trường nào phù hợp?
Đánh dấu hoàn thành
Cần đạt ít nhất 80% quiz trước khi chốt bài.