Mạng 02/09/2026 8 phút

Gửi 1 byte, có 67 byte chạy trên dây — 98,51% là bao bì, và sách vẽ header TCP sai 12 byte

Mỗi gói TCP/IP trên Ethernet gánh khoảng 66 byte header cố định, không đổi dù ruột là 1 byte hay 1448. Với gói nhỏ, header nuốt gần hết băng thông. Đo thật từng byte bằng tcpdump — kèm sự thật header TCP không phải 20 byte như sách vẽ, và cú offload suýt giấu mất gói quan trọng nhất.

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.

Mạng 02/09/2026 9 phút

connect() có cảm giác 'kết nối ngay' — bắt gói ra mới thấy nó tốn 3 gói và trọn một RTT trước byte đầu

Mở một kết nối TCP phải trao đổi SYN, SYN-ACK, ACK — ba gói và một vòng khứ hồi trước khi gửi được byte dữ liệu nào. Trên loopback là vài chục micro giây, nhưng qua hai châu lục là 150ms trả cho mỗi kết nối mới. Đo thật bằng tcpdump, kèm vì sao mọi connection pool tồn tại để né đúng cái thuế này.

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

Một tài liệu XML đọc trộm /etc/passwd của máy chủ — nhưng bốn trong sáu parser Python đã lặng lẽ chặn nó

Tôi gửi một tài liệu XML có 'thực thể ngoài' trỏ vào /etc/passwd, và một parser cấu hình sai trả về nguyên danh sách người dùng hệ thống. Nhưng điều bất ngờ là bốn trong sáu cấu hình tôi thử đã mặc định an toàn. XXE ngày nay phần lớn là lỗi bật nhầm một cái cờ.

DevOps 02/09/2026 9 phút

Biểu đồ máy chủ ghi 0,673 ms trong khi người dùng chờ 151 ms tải trang — không ai nói dối, họ chỉ đang trả lời ba câu hỏi khác nhau

Máy chủ tự báo 0,673 ms, người dùng thật chờ 151,255 ms — nó mù 99,6% thời gian. Tôi đo khoảng cách đó khi thêm độ trễ mạng, và phát hiện kích thước phản hồi chỉ lộ ra khi có độ trễ (chênh 2,2% trên mạng nhanh thành 128% khi thêm 50 ms), còn keep-alive tiết kiệm đúng một vòng khứ hồi. Ba con số trong bảng là ba đại lượng khác nhau, không phải ba mức chính xác của một đại lượng.

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

bcrypt biến 4 ngày dò thành 3.800 năm — nhưng vẫn để lọt mật khẩu '123456' trong 51 giây: hai lớp khoá bảo vệ hai thứ khác nhau

Tôi dựng một cuộc tấn công từ điển thật vào mười bản băm và đo: mật khẩu yếu bị bẻ 6/10 dù dùng bcrypt, còn mật khẩu mạnh biến từ '4 ngày trên SHA256' thành '3.800 năm trên bcrypt'. Hai lớp phòng thủ — mật khẩu mạnh và thuật toán chậm — nhân nhau chứ không cộng, và thiếu một lớp là sụp về mức của lớp yếu hơn.