Tags:

SQL Injection là gì? Chúng ta có cần quan tâm đến nó nữa không?

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

Tin tặc có thể lấy tất cả dữ liệu người dùng có trong cơ sở dữ liệu như chi tiết người dùng, thông tin thẻ tín dụng, số an sinh xã hội và cũng có thể truy cập vào các khu vực được bảo vệ như cổng quản trị viên. Cũng có thể xóa dữ liệu người dùng khỏi bảng. Ngày nay, tất cả các ứng dụng mua sắm trực tuyến, giao dịch ngân hàng đều sử dụng máy chủ cơ sở dữ liệu back-end. Vì vậy, trong trường hợp tin tặc có thể khai thác SQL injection, toàn bộ máy chủ sẽ bị xâm phạm.

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

https://www.geeksforgeeks.org/sql-injection-2/

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x