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.

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

Số dư tụt từ 1000 xuống 500 chỉ vì bạn mở nhầm một trang — và vì sao SameSite=Lax chặn được cú POST đó nhưng vẫn để mất tiền qua một route GET

Tôi dựng một 'ngân hàng' có phiên thật, một trang tấn công ở tên miền khác và một Chromium thật ở giữa, rồi đo: SameSite=Lax một mình chặn CSRF cho POST không cần token, nhưng một route GET đổi trạng thái vẫn mất 500 đồng ngay cả với Lax. Token và SameSite cắt ở hai mắt xích khác nhau, và bạn nên có cả hai.

DevOps 02/09/2026 9 phút

Một dịch vụ quên chuyển tiếp một header, và trace của tôi vỡ đôi — cộng lấy mẫu, tỷ lệ tìm thấy trace rơi 9,8 lần

Cho đúng một chặng giữa chuỗi quên chuyển tiếp header traceparent, cái cây trace tách làm hai — mà không dịch vụ nào báo lỗi, cả hai mảnh đều 'khoẻ mạnh'. Cộng lấy mẫu 10%, tỷ lệ yêu cầu có trace đầy đủ rơi từ 9,93% xuống 1,01%. Mỗi chỗ gãy không cộng chi phí, nó nhân.

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 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ờ.