Bảo mật 02/09/2026 8 phút

Trang của kẻ tấn công đọc trọn số dư và số thẻ của người dùng đã đăng nhập — chỉ vì một dòng CORS 'phản chiếu Origin' trông y hệt một danh sách trắng động

CORS không phải lớp bảo mật thêm vào — nó là cơ chế nới lỏng same-origin policy, và cấu hình sai mở toang cánh cửa vốn được khoá. Tôi đo bằng Chromium thật: cấu hình phản chiếu Origin cho trang evil đọc trọn dữ liệu có credentials, trong khi '*' bị chuẩn chặn và danh sách trắng thì an toàn. Kèm một hiểu lầm cần gỡ: 'Failed to fetch' không có nghĩa request bị chặn.

Bảo mật 02/09/2026 9 phút

Cùng một thư viện làm sạch HTML: cấu hình chặt chặn 9/9 payload tấn công, tôi thêm một dòng allowlist là lọt ngay 3 — lỗ nằm ở người, không ở thư viện

Ba thư viện làm sạch HTML trên chín payload XSS, xác minh bằng Chromium thật — script có THỰC SỰ chạy không. Cấu hình chặt: cả ba 0/9. Nhưng chính bleach đó, thêm on* handlers vào allowlist, để lọt 3/9. Bài học: bảo mật làm sạch nằm ở danh sách cho phép, không ở tên thư viện.

Bảo mật 02/09/2026 9 phút

Một trang lỗi debug quên tắt rò 14.276 ký tự: đường dẫn, số dòng, biến cục bộ — và tên bảng SQL biến kẻ dò mù thành nhắm trúng

Thông báo lỗi sinh ra để giúp lập trình viên — và khi hiện cho người dùng, nó giúp luôn kẻ tấn công. Tôi đo lượng thông tin rò ở chế độ debug so với production: gấp ~700 lần, và một lỗi SQL nguyên văn phơi cả tên bảng lẫn câu truy vấn. Bài học: thông báo chung ra ngoài, log chi tiết vào trong.

DevOps 02/09/2026 9 phút

Tỷ lệ request chậm tăng 10 lần: p50 nhích 3%, trung bình tăng 91%, p99 tăng 927% — vì sao trung bình trên dashboard của bạn nói dối

Tôi cho tỷ lệ request chậm tăng dần trên một triệu mẫu thật và xem ba con số quen thuộc phản ứng ra sao. Kết quả: nếu theo dõi p50 bạn không thấy gì, nếu theo dõi trung bình bạn thấy quá muộn, chỉ p99 kêu đúng lúc. Và con số chính xác nhất Histogram cho bạn lại đúng là con số ít dùng nhất.