Injection xảy ra khi kẻ tấn công chèn dữ liệu độc hại vào luồng xử lý đầu vào của ứng dụng – như câu lệnh SQL, LDAP, XML, hay thậm chí là mã hệ thống.
Bạn có thể tưởng tượng đơn giản thế này:
“Thay vì nhập tên đăng nhập là Alice, hacker nhập vào đoạn như: Alice' OR '1'='1
.”
Và nếu backend không xử lý đầu vào đúng cách, hacker có thể qua mặt xác thực, lấy dữ liệu, thậm chí xóa cả database.
Giả sử ứng dụng backend có đoạn SQL sau để kiểm tra tên người dùng:
Nếu input là admin' --
, thì truy vấn trở thành:
Dấu --
là comment trong SQL => phần sau bị bỏ qua, và hacker đăng nhập vào với tư cách admin mà không cần mật khẩu.
LDAP Injection: Hacker có thể chèn filter LDAP để liệt kê tất cả user, thay đổi password hoặc cấp thêm quyền cho user giả mạo.
XML External Entity (XXE): Nếu ứng dụng đọc file XML mà không chặn tham chiếu bên ngoài, hacker có thể yêu cầu ứng dụng đọc file nội bộ như /etc/passwd
.
Không bao giờ tin dữ liệu từ người dùng – kể cả cookie, header, query string.
Dùng prepared statements / parameterized queries. Đừng nối chuỗi SQL bằng tay.
Validate chặt đầu vào: ví dụ, nếu bạn chỉ cần chữ thường, đừng chấp nhận ký tự khác. Không phải "cho phép tất cả rồi lọc ra", mà là "chỉ cho phép cái cần dùng".
Escape và encode đúng cách khi đầu vào được sử dụng trong HTML, XML, hay SQL.
Lỗ hổng này liên quan đến xác thực yếu – ví dụ:
Mật khẩu mặc định không đổi
Session ID đoán được
Token lưu trữ không an toàn
Nếu bị khai thác, hacker sẽ “đăng nhập” thành công như người dùng thật. Và từ đó, mọi chuyện tệ hại đều có thể xảy ra.
Khi dữ liệu không được mã hóa (at rest hoặc in transit), bạn đang đánh cược với số phận.
Ví dụ:
Lưu mật khẩu dạng text (plaintext)? Game over.
Không dùng HTTPS? Ai đó có thể sniff được traffic.
Và nếu hacker lấy được danh sách user, password, email... thì rất có thể bạn bị phạt nặng theo luật như GDPR, hoặc bị lợi dụng để tấn công chuỗi (credential stuffing, spear phishing...).
Nếu bạn load file XML từ người dùng, và không tắt external entity, hacker có thể ép ứng dụng của bạn đọc file nội bộ, hoặc làm chậm hệ thống bằng các kỹ thuật như Billion Laughs Attack.
Ví dụ: hacker gửi XML có chứa đường dẫn file:///etc/passwd
, và hệ thống backend đọc file đó => lộ toàn bộ danh sách user Linux.
Đừng bao giờ tin đầu vào từ người dùng
Luôn kiểm tra, lọc và xử lý dữ liệu đúng cách
Cập nhật kiến thức OWASP Top 10 thường xuyên – vì hacker không ngủ
Bạn đang lập trình web, viết API hay quản trị hệ thống? Injection và những lỗi OWASP Top 10 là kiến thức sinh tồn bắt buộc phải nắm vững. Đừng để một đoạn code ngây thơ làm sụp cả hệ thống!