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.

Bạn đang xem: Injection là gì

Ví dụ thực tiễn SQL Injection

Ví dụ, trong form đăng nhập, người dùng nhập dữ liệu, trong trường tìm kiếm người dùng nhập văn bản tìm kiếm, trong biểu mẫu lưu dữ liệu, người dùng nhập dữ liệu cần lưu. Tất cả các dữ liệu được chỉ định này đều đi vào cơ sở dữ liệu.

Thay vì nhập dữ liệu đúng, kẻ tấn công lợi dụng lỗ hổng để insert và thực thi các câu lệnh SQL bất hợp pháp để lấy dữ liệu của người dùng… SQL Injection được thực hiện với ngôn ngữ lập trình SQL. SQL (Structured Query Language) được sử dụng để quản lý dữ liệu được lưu trữ trong toàn bộ cơ sở dữ liệu.

*
*
*
*

Các phần dễ bị tấn công bao gồm:Form đăng nhậpForm tìm kiếmForm nhận xétBất kì trường lưu hoặc trường đầu vào của dữ liệuLiên kết của website

Cần lưu ý là trong khi thử nghiệm chống lại tấn công này là không thể chỉ kiểm tra một hoặc một vài trường bởi vì một trường có thể được bảo vệ chống lại SQL Injection, nhưng một trường khác thì không. Do đó, điều quan trọng là đừng quên kiểm tra tất cả các trường của trang web.

Xem thêm: Thân Phụ Là Gì ? Nghĩa Của Từ Thân Phụ Trong Tiếng Việt

Cách giảm thiểu và phòng ngừa SQL Injection

Luôn kiểm tra kỹ các trường nhập dữ liệu và các bạn cần ràng buộc thật kỹ dữ liệu người dùng nhập vào.

Ví dụ:

//Thông thường$id = $_GET;//Ràng buộc$id = isset($_GET)?(string)(int)$_GET:false;Dùng Regular Expression để loại bỏ đi các ký tự lạ hoặc các ký tự không phải là số.

$id = isset($_GET) ? $_GET : false;$id = str_replace(“//”, “”, $id);Hoặc dùng các hàm có sẵn để giảm thiểu lỗi. Mỗi khi truy vấn thì mọi người nên sử dụng thêm hàm mysqli_real_escape_string để chuyển đổi một chuỗi thành một query an toàn.

Xem thêm: Khoáng Sản Là Gì – Có Các Loại Khoáng Sản Nào

$id = isset($_GET)?(string)(int)$_GET:false;$sql= “SELECT * FROM tbl_user WHERE id= ” . mysqli_real_escape_string($id);Và lời khuyên cuối cùng là chúng ta nên dùng các Framework và hạn chế dùng code thuần tối đa nếu có thể. Framework luôn có cộng đồng hoặc các chuyên gia bảo mật giúp tìm lỗi và update liên tục, từ đó chúng ta có thể giảm bớt thời gian xử lý lỗi để tăng thời gian làm sản phẩm cũng là một điều hay.

Chuyên mục: Hỏi Đáp