Mục lục
SQL Injection là gì?
SQL Injection là một kỹ thuật lợi dụng những lỗ hổng về câu truy vấn của các ứng dụng. Được thực hiện bằng cách chèn thêm một đoạn SQL để làm sai lệnh đi câu truy vấn ban đầu, từ đó có thể khai thác dữ liệu từ database.
- SQL injection có thể cho phép những kẻ tấn công thực hiện các thao tác như một người quản trị web, trên cơ sở dữ liệu của ứng dụng.
- SQL injection là một trong những kỹ thuật hack web phổ biến nhất.
Ví dụ thực tiễn SQL Injection
Gỉa sử chúng ta có một ứng dụng quản lý sinh viên, bất kỳ sinh viên nào cũng có thể xem được thông tin chi tiết của mình bằng việc nhập vào form mã số sinh viên của mình.
Kẻ tấn sẽ dựa vào vào để tấn công bằng SQL Injection bằng cách nhập dữ liệu vào form:
12222345 or 1=1.
Khi server sinh ra câu SQL sẽ giống như sau
SELECT * from STUDENT where STUDENT-ID == 12222345 or 1 = 1
Bây giờ 1 = 1, điều này sẽ khiến Server trả về tất cả các bản ghi của Student. Vì vậy, về cơ bản, tất cả dữ liệu sinh viên đều bị xâm phạm. Giờ đây, người dùng độc hại cũng có thể xóa hồ sơ học sinh theo cách tương tự.
Ví dụ câu lệnh dưới đây
SELECT * from USER where USERNAME = “” and PASSWORD=””
Giờ đây, kẻ tấn công có thể sử dụng toán tử ‘=’ một cách thông minh để lấy thông tin người dùng riêng tư và an toàn.
Select * from User where (Username = “” or 1=1) AND (Password=”” or 1=1).
Vì 1=1, nên kết quả là kẻ tấn công có thể đăng nhập vào hệ thống mà không cần dùng dến user và password.
Tác hại của SQL Injection
Cách giảm thiểu và phòng ngừa SQL Injection
Xác thực người dùng: Xác thực đầu vào từ người dùng bằng cách xác định trước độ dài, loại đầu vào, của trường nhập và xác thực người dùng.
Hạn chế đặc quyền truy cập của người dùng và xác định lượng dữ liệu mà bất kỳ người ngoài nào có thể truy cập từ cơ sở dữ liệu.
Về cơ bản, người dùng không nên được cấp quyền truy cập mọi thứ trong cơ sở dữ liệu. Không sử dụng tài khoản quản trị viên hệ thống
Nguồn tham khảo