Injection – Sát thủ thầm lặng trong thế giới ứng dụng web -

Injection – Sát thủ thầm lặng trong thế giới ứng dụng web -

Injection – Sát thủ thầm lặng trong thế giới ứng dụng web -

Injection – Sát thủ thầm lặng trong thế giới ứng dụng web -

Injection – Sát thủ thầm lặng trong thế giới ứng dụng web -
Injection – Sát thủ thầm lặng trong thế giới ứng dụng web -
(028) 35124257 - 0933 427 079

Injection – Sát thủ thầm lặng trong thế giới ứng dụng web

Chào anh em IT! Hôm nay Ad chia sẻ phần 2 của chuỗi Top 10 lỗ hổng OWASP – một trong những danh sách must-know với bất kỳ ai làm trong lĩnh vực phát triển và bảo mật ứng dụng web. Bài này sẽ xoáy sâu vào các lỗ hổng nguy hiểm hàng đầu, với Injection đứng chễm chệ ở vị trí số 1.

Injection là gì? Vì sao lại nguy hiểm?

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.

Ví dụ đơn giản: SQL Injection

Giả sử ứng dụng backend có đoạn SQL sau để kiểm tra tên người dùng:


 
sql
Sao chépChỉnh sửa
SELECT * FROM users WHERE username = '$input';

Nếu input là admin' --, thì truy vấn trở thành:


 
sql
Sao chépChỉnh sửa
SELECT * FROM users WHERE username = 'admin' -- ';

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.

Không chỉ SQL – còn có LDAP, XML, v.v...

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

Phòng chống thế nào?

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


Broken Authentication – Khi hacker có chìa khoá cửa chính

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.


Sensitive Data Exposure – Lộ lọt dữ liệu nhạy cảm

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


XXE – External Entity Attack

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.


Kết luận: 3 bài học nằm lòng

  1. Đừng bao giờ tin đầu vào từ người dùng

  2. Luôn kiểm tra, lọc và xử lý dữ liệu đúng cách

  3. 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!


FORM ĐĂNG KÝ MUA HÀNG
Đặt hàng
icon-cart
0