SQL injection là gì? Cách phòng tránh tấn công SQL Injection

Ngày đăng: 16/10/2024
Tác giả: Nguyễn Thị Thủy
Lượt xem: 52
Theo dõi:

SQL injection là gì? Đây là một kỹ thuật tấn công bảo mật web, đã có nhiều người gặp phải và nó gây ra các tác hại nguy hiểm cho doanh nghiệp của bạn. Trong bài viết này, HostingViet sẽ giải đáp cho bạn khái niệm, các dạng tấn công SQL injection, sự nguy hiểm của nó, những phần trên website của bạn dễ bị SQL injection, ví dụ và cách phòng chống hình thức tấn công này nhé!

SQL injection là gì

 

SQL injection là gì?

SQL injection (SQLi) là một kỹ thuật tấn công mạng nguy hiểm, kẻ xấu sẽ chèn code để nhằm khai thác lỗ hổng bảo mật trong ứng dụng web, làm sai lệnh đi câu truy vấn ban đầu để khai thác dữ liệu từ database của bạn. Khi ứng dụng web xử lý lưu lượng truy cập này mà thiếu những biện pháp kiểm tra và lọc dữ liệu đầu vào thích hợp, lúc này mã độc sẽ được thực thi trực tiếp trên hệ thống cơ sở dữ liệu đãn tới những cuộc tấn công AQL injection.

SQL injection cho phép kẻ tấn công thực hiện các thao tác như delete, insert, update,... như người quản trị web, trên cơ sở dữ liệu của ứng dụng.

Sự nguy hiểm của SQL Injection

SQL Injection sẽ cực kỳ nguy hiểm vì:

  • Kẻ xấu có thể sao chép hoặc ăn cắp các dữ liệu của website/hệ thống.
  • Kẻ xấu có thể hack tài khoản cá nhân.
  • Kẻ xấu có thể rhay đổi hoặc xóa các dữ liệu nhạy cảm của hệ thống.
  • Người dùng có thể kiểm soát máy chủ cơ sở dữ liệu, thực thi lệnh trái phép.
  • Người dùng có thể đăng nhập với tư cách của người dùng khác, ngay cả với tư cách là quản trị viên. Họ có thể xem các thông tin cá nhân của người khác.
  • Người dùng có thể sẽ được sửa đổi, xóa cấu trúc của cơ sở dữ liệu.

Cách tấn công SQL injection được điều khiển bằng bot

Tấn công SQL Injection có thể được điều khiển bằng bot, điều này giúp mở rộng quy mô các cuộc tấn công này và tăng độ nguy hiểm cảu chúng. Dưới đây là cách mà bot điều khiển tấn công SQL Injection:

  • Thực thi tấn công tự động: Bot có thể được lập trình để tự động gửi các payload SQL injection tới những ứng dụng web. Chúng có thể cùng lúc kiểm tra những trường đầu vào khác nhau và thử tiêm các loại khác nhau ở tốc độ cao.
  • Khả năng mở rộng: Bot có khả năng thực hiện hàng nghìn lần thử nghiệm SQL injection cùng lúc trên nhiều trang web hoặc ứng dụng. Khả năng này giúp tăng khả năng tìm thấy lỗ hổng bảo mật và khiến tổ chức khó phòng thủ hơn trước những cuộc tấn công như vậy.
  • Kỹ thuật nâng cao: Bot có kỹ thuật nâng cao để tránh bị phát hiện chẳng hạn như dùng proxy, xoay địa chỉ IP và dùng mã hóa và dùng các payload SQL phúc tạp để có thể vượt qua các biện pháp bảo mật thông thường một cách an toàn.
  • Thu thập dữ liệu: Sau khi bot tiêm mã SQL độc thành công vào ứng dụng web, nó có thể tự động hóa quá trình trích xuất dữ liệu quan trọng từ database (cơ sở dữ liệu).
  • Khai thác liên tục: Bot liên tục thăm dò những lỗ hổng bảo mật và khai thác thông tin liên tục. Nó cũng có thể thích nghi với các biện pháp bảo mật của ứng dụng, trở thành mối đe dọa dai dẳng đối với hệ thống của bạn.

Các dạng tấn công SQL Injection hiện nay

Có nhiều dạng SQL injection khác nhau, dưới đây là các dạng tấn công SQL injection mà bạn cần biết:

1. In-band SQLi (SQL Injection trực tiếp)

Loại tấn công này là phổ biến nhất, nó dễ dàng khai thác lỗ hổng SQL injection nhất. Hacker chỉ cần dùng 1 kênh liên lạc để có thể khởi động cuộc tấn công và bắt đầu thu thập dữ liệu của bạn.

Loại tấn công này có 2 biến thể phụ là: Error-based SQLi và Union-based SQLi.

Error-based SQLi

Đây là một kỹ thuật mà kẻ tấn công sẽ thực hiện hành động để cơ sở dữ liệu trả về thông báo lỗi, lợi dụng lúc đó, chúng tấn công dựa vào thông báo lỗi được trả về từ phía Database Server có chứa các thông tin về cấu trúc của cơ sở dữ liệu.

Union-based SQLi

Các hacker lợi dụng toán tử UNION SQL kết hợp nhiều câu lệnh được tạo ra bởi cơ sở dữ liệu để thu được một HTTP response - nơi chứa các dữ liệu mà hacker nhắm tới.

2. Inferential SQLi (Blind SQLi)

Nó được gọi là tấn công blind SQLi bởi hacker sẽ không thể thấy trực tiếp cách mà cuộc tấn công diễn ra. Theo đó, kẻ tấn công sẽ gửi các data payload tới server, rồi dựa vào phản ứng và hành vi của server để tìm hiểu về cấu trúc của nó. Loại tấn công này có 2 loại biến thể như sau:

Blind-boolean-based

Hacker gửi một câu truy vấn SQL tới server, khi đó, ứng dụng buộc phải trả kết quả để trả lời truy vấn, dựa vào kết quả, đáp án mà thông tin HTTP response sẽ được chỉnh sửa cho tới khi đúng với thực tế, khi đó, hacker sẽ nắm bắt được các thông tin xung quanh cấu trúc của server.

Time-based Blind SQLi

Loại tấn công này giống với boolean nhưng khác ở chỗ là hacker sẽ dùng các câu lệnh SQL để làm server của bạn ngừng hoạt động trong vài giây, căn cứ vào thời gian phản hồi mà hacker sẽ tra được kết quả truy vấn.

3. Out-of-band SQLi

Đây là cách tấn công khác mà hacker sử dụng khi server mục tiêu hoạt động không ổn định và quá chậm. Cách tấn công này sẽ đòi hỏi các tính năng nhất định được kích hoạt trên server cơ sở dữ liệu, hacker sẽ tận dụng lúc server tạo ra HTTP request hoặc DNS để có thể thu thập dữ liệu cần.

Các phần dễ bị dính tấn công SQL Injection

Các phần dễ bị tấn công bao gồm:

  • Form đăng nhập
  • Form nhận xét
  • Form tìm kiếm
  • Hoặc bất kỳ trường lưu hay trường đầu vào của dữ liệu
  • Liên kết trên website

Các phần dễ bị tấn công SQL Injection

 

Cách phòng chống tấn công SQL Injection

Để phòng tránh cuộc tấn công SQL injection, bạn hãy thường xuyên kiểm tra kỹ lưỡng các trường nhập dữ liệu người dùng nhập vào. Sẽ có các biện pháp sau để bạn có thể phòng chống tấn công này:

Lọc dữ liệu từ người dùng

Dùng filter để có thể lọc các ký tự đặc biệt (; ” ‘) hay các từ khóa (SELECT, UNION) do người dùng nhập vào.

Không cộng chuỗi để tại SQL

Dùng parameter thay vì sử dụng cộng chuỗi.

Không hiển thị exception, message lỗi

Do hacker dựa vào message lỗi để có thể tìm ra cấu trúc database nên bạn chỉ cần cho hiện thông báo lỗi chứ không cần hiện đầy đủ thông tin về lỗi, không cho kẻ xấu có cơ hội lợi dụng.

Phân quyền rõ ràng trong DB

Nếu chỉ cần truy cập dữ liệu từ một số bảng thì bạn chỉ cần tạo 1 account trong DB rồi trao quyền truy cập cho account đó, không nên dùng account root hay sa.

Backup các dữ liệu thường xuyên

Phòng trường hợp bị hacker xóa thì vẫn có thể khôi phục lại được các dữ liệu trên web.

Vậy là trên đây HostingViet đã giải đáp cho bạn “SQL injection là gì?” và các thông tin xoay quanh loại tấn công web này. Hy vọng qua bài viết này bạn sẽ hiểu và biết cách phòng tránh SQL injection.

Bài viết liên quan
 
 
2025/05/09

Latency là gì? Nguyên nhân và Cách khắc phục độ trễ

Latency là gì? Latency hay còn gọi là độ trễ, là khoảng thời gian tính từ lúc người dùng thực hiện một h&a...
Tác giả:
Đọc thêm
 
 
2025/05/06

9 Cách đặt tên Email chuyên nghiệp cho cá nhân, doanh nghiệp

  Tại sao nên biết cách đặt tên email chuyên nghiệp? Đặt tên email chuyên nghiệp cực kỳ quan trọng vì nó ...
Tác giả:
Đọc thêm
 
 
2025/04/26

Mysql workbench là gì? Cách Download và sử dụng [Hướng dẫn]

Mysql workbench là gì? MySQL Workbench là một công cụ được thiết kế trực quan, hỗ trợ truy cập và quản lý cơ sở dữ liệu. ...
Tác giả:
Đọc thêm
 
 
2025/04/24

Hybrid Cloud là gì? Ưu, Nhược điểm và Ứng dụng đám mây lai

Hybrid cloud là gì? Hybrid Cloud (máy ảo dùng riêng) là mô hình điện toán “đám mây...
Tác giả:
Đọc thêm
 
 
2025/04/23

Root domain là gì? Hướng dẫn cách đăng ký nhanh nhất

Root domain là gì? Ví dụ về Root Domain Root Domain (hay còn gọi là tên miền gốc) là cấp cao nhất trong hệ thống t...
Tác giả:
Đọc thêm
 
 
2025/04/22

Docker compose là gì? Các lệnh cơ bản và Cách cài đặt

Docker compose là gì? Docker Compose là một công cụ giúp bạn định nghĩa và quản lý các ứng dụng multi-conta...
Tác giả:
Đọc thêm