Tấn công kiểu SQL Injection và cách phòng chống trong ASP.NET

Tấn công kiểu SQL Injection và cách phòng chống trong ASP.NET

SQL Injection là gì ?

  1. Tấn công SQL Injection là gì?
  2. Công cụ để tấn công SQL Injection
  3. Cú pháp để tấn công SQL Injection
  4. Cách khắc SQL Injection là gì

1.Tấn công SQL Injection là gì?

Là một trong những kiểu hack web, xâm nhập vào dữ liệu web cho dù thông tin đăng nhập không đúng với dữ liệu, dữ liệu lưu các user là admin với mật khẩu là 123, khach là 234 , nhưng người tấn công vào web không cần biết các thông tin user và mật khẩu.

2.Công cụ để tấn công SQL Injection


Hacker tấn công sử dụng duyệt web bất kì, chẳng hạn như Internet Explorer, , chrome, firrfox ..
 (1) Thay đổi lại giá trị tham số trên url, ví dụ web: sanpham?ma=1
    thay đổi là giá trị của tham số mã.
 (2) Thay đổi lại giá trị từ ô input nhập từ giao diện web.

3. Cú pháp để tấn công SQL Injection


-- Chưa bàn tới ASPX, chỉ bàn cách code ở sql thì bạn xem câu lệnh sau:
Trong tbUser và 2 bảng ghi

UserName       Pass
admin              123
khach               456

Từ query truy vấn SQL:
Select * from tbUser  where UserName='admin' and Password='123'
* Ta sẽ lấy được thông tin từ tbUser bảng ghi dòng 1.

Select* from tbUser ta sẽ toàn bộ bảng ghi trong tbUser

* Các hacker đã lợi dụng vào cú pháp sau:
Select* from tbUser  where UserName='x' and Password='y' OR '1'='1'
 Nếu câu lệnh SQL trên chạy thì ra toàn bộ bảng ghi
  * Vì sao UserName='x' and Password ='y' không đúng trong CSDL nhưng lại ra hết bảng ghi.
   Bởi vì thêm đoạn sql : OR '1'='1'  ( sai OR đúng thì ra là ĐÚNG)

 --  Tấn công kiểu SQL Injection

Tại page login có 2 text nhập liệu có tên txtUS và txtPass ta viết code aspx để sinh ra câu sql
Select* from tbUser  where UserName='x' and Password='y' OR '1'='1'
x được thay thế giá trị từ txtUS, y được thay thế từ txtPass

Vậy giờ ta sử dụng cú pháp OR phía trên
-- nhập vào    txtUS là 1 , txtPass nhập vào giá trị là 2' OR '1'='1

* Các cú pháp khác tấn công SQL Injection

Một số loại dữ liệu khác mà cũng nên thử submit để biết xem trang web có gặp lỗi hay không:

    ' or 1=1–

    ” or 1=1–

    or 1=1–

    ‘ or ‘a’=’a

    ” or “a”=”a

    ‘) or (‘a’=’a

4. Cách khắc SQL Injection là gì


  Trong ASP.NET có cách ngăn chặn Injection đơn giản là sử dụng các Parameters khi làm việc với object SqlCommand (hoặc OleDbCommand) chứ không sử dụng các câu lệnh SQL trực tiếp. Khi đó .NET sẽ tự động validate kiểu dữ liệu, nội dung dữ liệu trước khi thực hiện câu lệnh SQL.

Tấn công kiểu SQL Injection và cách phòng chống trong ASP.NET