Nếu như tấn công DDoS đã khiến những kỹ sư an ninh mạng cảm thấy đau đầu thì một dạng tấn công khác được đánh giá nguy hiểm, tinh vi có tỷ lệ xuất hiện cao hơn DDoS rất nhiều đó là SQL injection.
Để bảo vệ trang web của doanh nghiệp được an toàn hơn, hôm nay hãy cùng Sapo.vn tìm hiểu SQL injection là gì, cách tấn công SQL injection và các phương pháp phòng chống SQL injection.
1. SQL injection là gì?
SQL injection là gì? SQL injection là một kỹ thuật mà trong đó những kẻ xấu sẽ lợi dụng những lỗ hổng về bảo mật nhằm đánh cắp tất cả những thông tin dữ liệu quan trọng của website mục tiêu.
SQL injection là một dạng tấn công thường xuyên xảy ra trên internet và được nhiều hacker lựa chọn. Vì kết quả mà tấn công SQL injection đem lại thường đúng mục đích, động cơ.
2. Phân loại SQL injection thường gặp
2.1. In-band SQLi (Classic)
Loại SQL injection này, những kẻ xấu sẽ sử dụng một kênh liên lạc chung để tấn công vào “con mồi” để lấy những dữ liệu cần thiết. Vì In-band SQLi có cách thức thực hiện đơn giản, vậy nên đây là một trong những kiểu SQL injection phổ biến và thường gặp nhất hiện nay.
In-band SQLi được chia thành hai loại, bao gồm:
- Error-based SQLi: Kẻ tấn công sẽ làm cơ sở dữ liệu xuất hiện những thông báo lỗi. Từ những thông báo lỗi này, hacker sẽ tiếp tục thu thập các thông tin của trang web mục tiêu.
- Union-based SQLi: Kẻ tấn công sẽ lợi dụng toán tử UNION SQL, kết hợp với nhiều câu lệnh để nhận lại HTTP response. Những thông tin dữ liệu mà kẻ tấn công có thể sử dụng đều trong response được nhận này.
2.2. Inferential SQLi (Blind)
Những kẻ tấn công sẽ gửi dữ liệu đến máy chủ nhằm thăm dò cấu trúc và phương thức hoạt động của máy chủ. Vì loại SQL injection này tấn công dựa trên các phản ứng thu thập được, vậy nên các hành động có thể sẽ được diễn ra chậm hơn.
Inferential SQLi được chia thành hai loại, bao gồm:
- Boolean: Kẻ tấn công sẽ gửi truy vấn SQL đến cơ sở dữ liệu để được trả về kết quả. Dựa vào đó, kẻ tấn công sẽ kiểm tra xem liệu thông tin được trả về có đúng hay không.
- Time-based: Kẻ tấn công sẽ gửi truy vấn SQL đến cơ sở dữ liệu, khiến cơ sở dữ liệu đợi vài giây trước khi hoạt động. Dựa vào phản ứng này, hacker sẽ xác định được truy vấn đúng hay sai. Từ những kết quả đó, một HTTP response sẽ được tạo ra. Bởi vậy, hacker có thể biết được độ xác thực của thông báo mà họ nhận được, không cần dựa vào dữ liệu của cơ sở dữ liệu.
2.3. Out-of-band SQLi
Loại này chủ yếu được dùng để thay thế cho kỹ thuật In-band và inferential SQLi. Trong trường hợp máy chủ quá chậm hoặc không đủ các yếu tố để thực hiện tấn công thông thường, các hacker sẽ lựa chọn Out-of-band SQLi.
3. Tác hại khi bị tấn công SQL injection nguy hiểm như nào?
Nếu một ngày không may trang web của bạn bị tấn công SQL injection, thì đây là những nguy hiểm mà bạn phải đối mặt:
- Những thông tin cá nhân của khách hàng sẽ bị kẻ xấu đánh cắp.
- Các dữ liệu quan trọng trên hệ thống sẽ bị sao chép hoặc đánh cắp.
- Những dữ liệu nhạy cảm của website có thể bị SQL injection xoá sạch.
- Bất cứ ai cũng có thể theo dõi được thông tin của người dùng khác, bao gồm địa chỉ cá nhân, các giao dịch, …
- Bất cứ ai cũng có thể đăng nhập vào hệ thống với tất cả các tư cách, kể cả đóng vai trò là người dùng khác, thậm chí là quản trị viên.
- Những người truy dùng có thể tùy chỉnh cơ sở dữ liệu, thêm bớt hoặc xóa những gì họ muốn.
- Ngay cả máy chủ cũng có thể dễ dàng bị người lạ kiểm soát và làm bất cứ điều gì mà họ ra lệnh.
Xem thêm: Bảo mật website là gì? 3 cách bảo mật website đơn giản cực hiệu quả
4. Cách phòng chống SQL injection
Để phòng chống kẻ xấu tấn công SQL injection và đảm bảo an toàn cho website, bạn nên làm những công việc sau đây:
4.1. Sử dụng các công cụ phát hiện lỗ hổng SQL injection
Cách đơn giản và tối ưu nhất là sử dụng các công cụ quét và kiểm tra lỗ hổng SQL injection. Công cụ bạn có thể tham khảo là Vega, Cystack Scan, IBM Security App Scan Standard, Burp Suite…. Hiện đây là những công cụ đang được sử dụng nhiều nhất, bởi kết quả kiểm tra lỗ hổng SQL injection chính xác và nhanh chóng.
4.2. Luôn chuẩn bị các hàng rào phòng thủ SQL injection
Để không bị tấn công SQL injection, trước hết bản thân trang web của bạn phải được trang bị những hàng rào chắc chắn. Ví dụ:
- Mã hoá những dữ liệu quan trọng trên website: Tất cả những thông tin nhạy cảm như mật khẩu, báo cáo, tài chính…. nên được mã hoá để trong trường hợp kẻ gian không may đánh cắp được các thông tin này cũng không thể mở luôn được.
- Không lưu những dữ liệu quan trọng trong cơ sở dữ liệu nếu chưa cần dùng đến: Hãy nhớ, bất cứ thông tin dữ liệu nào của bạn bị lộ ra cũng đều ảnh hưởng đến bạn. Để hạn chế rủi ro này, tất cả những thông tin quan trọng nên lưu trữ tại 1 mục riêng.
Xem thêm: Mã hóa dữ liệu là gì? 4 loại mã hoá dữ liệu phổ biến
Tổng kết
Trên đây là toàn bộ thông tin giải đáp thắc mắc SQL injection là gì, những kiểu tấn công SQL injection, sự nguy hiểm cùng với cách ngăn chặn tấn công SQL injection. Hy vọng bài viết này đã giúp bạn có thêm nhiều kiến thức về bảo mật, hẹn gặp lại các bạn trong những bài chia sẻ tiếp theo trên blog của Sapo