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

Route đăng nhập không giới hạn = máy dò mật khẩu miễn phí: 2.600 lần thử trong 70 giây, và bốn cách bịt nó — cái nào cũng còn một khe hở

Một vòng lặp curl chạy chậm vẫn thử được 2.600 mật khẩu trong 70 giây khi route đăng nhập không chặn gì. Bốn chiến lược giới hạn kéo nó xuống 10, rồi 5 — nhưng mỗi cái mở ra một điểm mù riêng, trong đó có một khe hở biến chính lớp phòng thủ thành công cụ DoS.

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

Một ký tự xuống dòng lọt vào giá trị cookie chèn thêm header Set-Cookie giả và chia đôi cả phản hồi — nhưng thư viện hiện đại đã chặn nó ở tầng

HTTP dựng cấu trúc trên một ký tự vô hình: cặp CRLF. Tôi dựng lại lỗ header injection — một \r\n trong giá trị người dùng tạo header giả và cả một thân phản hồi giả — rồi đo cách http.client và Werkzeug từ chối nó ngay. Lỗ chỉ còn sống khi bạn tự nối chuỗi response thô, và nó là cùng một con quái vật với SQL injection, XSS, command injection.

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

Đường gigabit mà tải file bên kia địa cầu vẫn ì ạch vài MB/s — thủ phạm không phải băng thông

Với cửa sổ TCP cố định, thông lượng tỉ lệ nghịch với RTT: RTT gấp đôi thì tốc độ còn một nửa, bất kể băng thông rộng bao nhiêu. Nới cửa sổ gỡ được trần đó (nhanh gấp 40 lần), nhưng RTT vẫn phạt bạn qua slow-start. Đo thật bằng netem, kèm cái bẫy đo-quá-ngắn.

DevOps 02/09/2026 9 phút

Cùng 200.000 dòng log: Loki tốn 5,40 MB tìm 33 ms, Elasticsearch tốn 16,22 MB tìm 3 ms — và để mapping mặc định là ném đi 29,5% dung lượng lấy đúng kết quả cũ

Tôi đẩy cùng một tệp log vào Loki và Elasticsearch rồi đo từng con số: ES trả lời nhanh gấp 13 lần, Loki tốn ít hơn 3 lần và nạp nhanh hơn. Nhưng phát hiện đắt nhất là mapping động mặc định của ES phí 29,5% dung lượng, nạp chậm 1,8 lần, lọc chậm 3,5 lần — cho y hệt kết quả. Đây là đánh đổi 'chỉ mục mọi thứ hay không' hiện ra bằng megabyte.

DevOps 02/09/2026 9 phút

Luật cảnh báo tôi viết để bắt sự cố im lặng hoàn toàn đúng lúc cần nhất — và nhịp tim vẫn đập thêm 3 phút sau khi Prometheus đã chết

Nếu chính hệ giám sát chết, bạn biết bằng cách nào? Tôi giết lần lượt exporter, Prometheus, Alertmanager và đo cái nào thật sự kêu. Luật ngưỡng bạn viết (dich_vu_hong > 0) im lặng khi exporter biến mất; chỉ up==0 và absent() bắt được. Và dead man's switch qua Alertmanager có khoảng mù 3 phút.

Bảo mật ứng dụng web 02/09/2026 9 phút

Bắt tay TLS tốn chưa tới 1 ms và chỉ trả một lần — nên 'TLS chậm' là cớ; cái thật sự nguy là dòng CERT_NONE viết lúc dev rồi theo bài lên production

Cùng một chữ HTTPS trên thanh địa chỉ có thể là TLS 1.3 cipher 256-bit, cũng có thể là máy chủ vẫn nhận TLS 1.0 và chứng chỉ chẳng ai ký. Tôi đo thời gian bắt tay (dưới 1 ms, trả một lần), thử ép giao thức cũ (bị từ chối), và chứng minh vì sao tắt kiểm chứng chỉ là vứt bỏ chống MITM — mã hoá mà không xác minh danh tính là khoá cửa rồi đưa chìa cho người lạ.