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.

2312 bài viết · Website
Lập trình 22/09/2026 6 phút

CSRF: vì sao cookie xác thực không đủ, và token chặn request giả mạo từ site khác

Trình duyệt tự động đính kèm cookie cho mọi request tới một domain — kể cả request do một trang độc khác kích hoạt. Đó là gốc rễ của CSRF: nếu server chỉ dựa vào cookie, kẻ tấn công khiến trình duyệt nạn nhân tự gửi request hợp lệ. Bài này tái hiện thật trong Go: một bank chỉ dựa cookie bị chuyển tiền (số dư 1000→900) từ request cross-site; thêm CSRF token, cùng request đó bị chặn (403, số dư không đổi). Cookie xác thực AI gửi; token xác thực request đến TỪ ĐÂU.

Cơ sở dữ liệu 22/09/2026 6 phút

random_page_cost cho SSD: vì sao mặc định 4.0 làm PostgreSQL né index oan

random_page_cost là tỉ số nói với planner đọc trang ngẫu nhiên đắt gấp mấy lần đọc tuần tự. Mặc định 4.0 hợp ổ cứng cơ HDD (thời gian seek), nhưng quá cao với SSD. Đo thật: cùng truy vấn khớp 1% dữ liệu, rpc=4.0 quét tuần tự cả bảng mất 84 ms, rpc=1.1 dùng index còn 7 ms — nhanh gấp 12 lần. Và cạm bẫy hạ quá tay. PostgreSQL 16.

Lập trình Go 22/09/2026 10 phút

Tổng kết Go chuyên sâu: bản đồ 132 bài và hai con số gói lại cả sê-ri

Kết thúc 132 bài đo thật về runtime, hiệu năng và hệ thống Go. Bài này vẽ bản đồ toàn sê-ri theo tám chủ đề, và đo một benchmark tổng hợp gói lại hai bài học lớn nhất: stack nhanh hơn heap 14,5 lần với 0 cấp phát, và thêm core giúp thật nhưng dưới tuyến tính (10 core chỉ nhanh 4,6x). Cùng cách tư duy đọng lại sau tất cả.

Lập trình Go 22/09/2026 9 phút

WebSocket server thật trong Go: nâng cấp từ HTTP, giao tiếp hai chiều bền vững

WebSocket nâng cấp một kết nối HTTP thành kênh hai chiều mở liên tục cho chat, thông báo đẩy, dữ liệu real-time. Đo thật trong Go 1.23: bắt tay 101 Switching Protocols, gửi/nhận trên một kết nối bền, và một message qua WebSocket nhanh hơn HTTP polling khoảng 23 lần.