Q

Quản trị viên

Là một lập trình viên yêu công nghệ, thích viết blog để chia sẻ kiến thức, kinh nghiệm lập trình và những điều thú vị trong thế giới tech.

2300 bài viết · Website
Bảo mật 02/09/2026 9 phút

Ở cùng 200 ms mỗi lần băm, bcrypt và argon2 làm kẻ tấn công chậm y như nhau trên CPU — khác biệt thật là 4 KB so với 512 MB RAM, gấp 131.072 lần

Lưu mật khẩu đúng cách nghĩa là không lưu mật khẩu. Tôi hiệu chỉnh bcrypt, scrypt, argon2 về cùng 200 ms/lần băm rồi đo: trên CPU cả ba làm kẻ tấn công chậm như nhau (5–6 lần đoán/giây), nên cấu hình đủ cao quan trọng hơn chọn thuật toán. Khác biệt thật lộ ra trên GPU/ASIC — argon2 dùng 512 MB RAM mỗi lần băm, vô hiệu hoá đúng lợi thế phần cứng của kẻ tấn công.

DevOps 02/09/2026 9 phút

logrotate báo 'thành công' rồi nuốt mất 4.317 dòng log — và không một dòng lỗi nào cảnh báo tôi

Tôi cho một tiến trình ghi 300.000 dòng đánh số rồi chạy logrotate ở giữa. copytruncate làm mất 4.317 dòng, im lặng tuyệt đối; đổi tên file thì không mất dòng nào nhưng cả luồng log chảy vào chỗ không ai đọc. Hai cách xoay vòng, hai kiểu hỏng, không cái nào kêu lên.

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

Chạy danh sách kiểm bảo mật lên chính cái blog này: tám mục đạt, khoá xanh, header đầy đủ — và một dòng curl vẫn moi ra cookie phiên thiếu cờ Secure

Làm sao BIẾT một ứng dụng đã cấu hình đúng, không phải bằng cảm giác 'chắc ổn'? Tôi chạy một danh sách kiểm chỉ-đọc lên chính blog Spring Boot đang chạy: header đủ, actuator đóng kín, trang lỗi sạch — nhưng cookie JSESSIONID thiếu cờ Secure, đúng cái mục mà sự tự tin chung che mất. Danh sách kiểm biến 'có an toàn không' mơ hồ thành một bảng từng dòng đạt/không đạt.

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

195 KB JSON làm sập cả tiến trình, còn giới hạn body 1 MB không cứu nổi — ba trục bùng nổ khi parse mà một cái trần không chặn hết

Kẻ tấn công parse không chỉ điều khiển kích thước dữ liệu mà cả cấu trúc của nó, và mỗi chiều đánh vào một tài nguyên khác nhau: JSON lồng sâu 100.000 cấp (195 KB) làm tràn stack, một số 100.000 chữ số đốt CPU O(n²), một mảng 5 triệu phần tử ngốn RAM. Tôi đo cả ba, và cho thấy vì sao giới hạn kích thước body — biện pháp phổ biến nhất — chỉ chặn được đúng một trục.

DevOps 02/09/2026 8 phút

Dịch vụ vừa hết công suất mà độ trễ và lỗi vẫn hoàn hảo — client tăng 8 lần, thông lượng chỉ +8%, còn p99 gấp 15,6 lần

Bốn tín hiệu vàng ai cũng nhắc, nhưng hiếm khi đo cạnh nhau trên cùng một sự cố. Tôi quét tải 1→64 client trên một dịch vụ 8 worker và đo cả bốn ở mỗi mức: saturation chạm trần ở đúng lúc độ trễ, lỗi và thông lượng còn đẹp — và định luật Little dự đoán độ trễ sau điểm bão hoà khớp trong 1,3%. Thứ tự bốn tín hiệu phản ứng mới là điều đáng nhớ.

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

'Một máy mở được 65535 kết nối' — tôi đo ra trần thật chỉ 28232, và con số 65535 che mất điều quan trọng

Một máy khách không mở được 65535 kết nối tới một đích — trần thật là kích thước dải cổng tạm (~28232), và nó đếm theo từng bộ bốn nên đổi cổng đích là nhân đôi hạn ngạch. Cộng thêm sự thật khó chịu: một kết nối vừa đóng vẫn ghim cổng hàng chục giây. Đo thật trong container.