Xin chào những bạn, bây giờ mình sẽ chia sẻ cho các bạn hiểu SQL Injection là gì và vì sao nó lại nguy hiểm!

1) lý do SQL Injection lại “Nguy hiểm”?

SQL Injection là một trong những kỹ thuật tận dụng những lỗ hổng về câu truy nã vấn mang dữ liệu của những website không bình an trên web, đó là một kỹ thuật tấn công rất phổ biến và sự thành công của nó cũng kha khá cao.

Bạn đang xem: Lỗi sql injection là gì

Đọc qua thì chúng ta cũng hiểu sơ sơ rồi phải không nào, giờ mình đang một vài ba lý do đã hình thành tên tuổi lừng lẫy của SQL Injection:

Có thể gây ra những thiệt sợ khổng lồ. Cùng với SQL Injection, hacker hoàn toàn có thể truy cập một phần hoặc cục bộ dữ liệu trong hệ thống.Lỗ hổng này siêu nổi tiếng, từ developer đến hacker gần như ai cũng biết. Quanh đó ra, còn có 1 số tool tấn công SQL Injection mang đến dân “ngoại đạo”, những người dân không biết những gì về lập trình.Rất những ông bự từng bị dính – Sony, Microsoft UK. Phần lớn vụ lùm xùm liên quan tới “lộ dữ liệu người dùng” ít nhiều đều dính dáng vẻ tới SQL Injection.

Dễ tấn công, phổ biến, tạo ra hậu trái nghiêm trọng, chính là lý dó Inject (Không chỉ SQL cơ mà OS và LDAP) nằm chễm chễ tại vị trí đầu bảng trong đứng top 10 lỗ hỗng bảo mật thông tin của OWASP. Tất nhiên là XSS, CSRF, và không mã hoá tài liệu cũng phía trong list này nốt.

Hậu quả của SQL Injection

Hậu quả lớn nhất mà SQL Injection tạo ra là: làm lộ dữ liệu trong database. Tuỳ vào tầm quan trọng của dữ liệu mà hậu quả xê dịch ở mức nhẹ cho tới vô thuộc nghiêm trọng.

Lộ dữ liệu quý khách hàng có thể ảnh hưởng rất nghiêm trọng mang lại công ty. Hình ảnh công ty hoàn toàn có thể bị hình ảnh hưởng, khách hàng chuyển qua sử dụng thương mại dịch vụ khác, dẫn mang lại phá sản v…v...

Lỗ hỗng này cũng tác động lớn mang lại khách hàng. Bởi vì họ hay được dùng chung một mật khẩu cho nhiều tài khoản, chỉ cần lộ password một tài khoản thì các tài khoản không giống cũng lộ theo.

Đây cũng là tại sao mình đề cập nhở bắt buộc mã hoá mật khẩu, ví như database có bị tấn công thì người tiêu dùng cũng không bị mất mật khẩu. (Đây là tại sao vietnamwork bị ăn uống chửi vì chưng không mã hoá mật khẩu).

*

Trong các trường hợp, hacker không chỉ là đọc được tài liệu mà còn hoàn toàn có thể chỉnh sửa dữ liệu. Lúc này hacker hoàn toàn có thể đăng nhập dưới vai trò admin, lợi dụng hệ thống, hoặc xoá toàn cục dữ liệu để hệ thống kết thúc hoạt động.

2) tấn công SQL Injection như vậy nào?

Cơ chế SQL Injection vô cùng đơn giản. Ta thường áp dụng câu lệnh SQL để truy vấn dữ liệu. Giả sử, ao ước tìm singin user, ta thường viết code như sau:

var username = request.username; // GiangLeLevar password = request.password; // 12345678var sql = "SELECT * FROM Users WHERE Username = "" + username + "" and Password = "" + password + """;// SELECT * FROM Users WHERE Username = "GiangLeLe" & Password = "12345678" Đoạn code trên đọc tin tức nhập vào trường đoản cú user và cùng chuỗi để thành câu lệnh SQL.Để tiến hành tấn công, hacker có thể chuyển đổi thông tin nhập vào, từ đó biến đổi câu lệnh SQL .

var password = request.password; // " OR "" = ""var sql = "SELECT * FROM Users WHERE Username = "" + username + "" and Password = "" + password + """;// SELECT * FROM Users WHERE Username = "GiangLeLe" & Password = "" OR "" = "" // Câu SQL này luôn cho tác dụng trueHacker rất có thể thông qua SQL Injection để dò tìm kết cấu dữ liệu (Gồm hồ hết table nào, có những column gì), sau đó bắt đầu khai thác dữ liệu bằng cách sử dụng các câu lệnh như UNION, SELECT vị trí cao nhất 1…

Các các bạn tự xem thêm qua những ví dụ ở nội dung bài viết này nhé: http://expressmagazine.net/development/1512/tan-cong-kieu-sql-injection-va-cac-phong-chong-trong-aspnet

3) bí quyết phòng chống

May thay, tuy nhiên SQL rất nguy nan nhưng cũng dễ phòng chống. Ngay gần đây, hầu như chúng ta ít viết SQL thuần mà toàn thực hiện ORM (Object-Relational Mapping) framework. Các framework web này đang tự chế tạo ra câu lệnh SQL nên hacker cũng khó tiến công hơn.

Tuy nhiên, có nhiều site vẫn thực hiện SQL thuần để truy cập dữ liệu. Đây chính là mồi ngon đến hacker. Để bảo vệ bạn dạng thân trước SQL Injection, ta có thể thực hiện những biện pháp sau.

Lọc dữ liệu từ bạn dùng: biện pháp phòng chống này tựa như như XSS. Ta thực hiện filter nhằm lọc các kí tự quan trọng đặc biệt (; ” ‘) hoặc các từ khoá (SELECT, UNION) do người dùng nhập vào. Nên thực hiện thư viện/function được hỗ trợ bởi framework. Viết lại từ trên đầu vừa tốn thời hạn vừa dễ sơ sót.Không cùng chuỗi để chế tác SQL: áp dụng parameter thay vày cộng chuỗi. Nếu dữ liệu truyền vào không hợp pháp, SQL Engine sẽ tự động báo lỗi, ta không yêu cầu dùng code để check.Không hiển thị exception, message lỗi: Hacker dựa vào message lỗi nhằm tìm ra cấu tạo database. Khi tất cả lỗi, ta chỉ hiện thông tin lỗi chứ đừng hiển thị không thiếu thông tin về lỗi, tránh tin tặc lợi dụng.Phân quyền cụ thể trong DB: nếu chỉ truy vấn dữ liệu từ một số bảng, hãy tạo ra một trương mục trong DB, gán quyền truy cập cho tài khoản đó chứ chớ dùng trương mục root xuất xắc sa. Dịp này, dù tin tặc có inject được sql cũng chẳng thể đọc tài liệu từ các bảng chính, sửa xuất xắc xoá dữ liệu.

Xem thêm: Giải Bài 3 Trang 169 Toán 11 (Toán 11, Đạo Hàm Của Hàm Số Lượng Giác)

Backup dữ liệu thường xuyên: cụ già có câu “cẩn tắc vô áy náy”. Tài liệu phải liên tục được backup nhằm nếu bao gồm bị hacker xoá thì ta vẫn rất có thể khôi phục được. Còn nếu cả dữ liệu backup cũng trở thành xoá luôn thì … chúc mừng bạn, update CV rồi tìm biện pháp chuyển công ty thôi!

4) Kết Luận

Dữ liệu là một trong những thứ “đáng tiền” tốt nhất trong trang web của bạn. Sau thời điểm đọc xong nội dung bài viết này, hãy kiếm tra lại coi trang của mình hoàn toàn có thể bị tấn công SQL Injection xuất xắc không, sau đó áp dụng những phương thức mình đã trả lời để fix.

Bạn như thế nào từng bị tiến công bởi SQL Injection, hoặc có tay nghề gì về phòng chống nó, hãy share trong phần comment nhé!