Sql injection là gì, mức độ nguy hiểm và cách ngăn chặn lỗ hổng bảo mật này

Nguyễn Hữu Dũng 27/04/2021

Sql injection là một khái niệm quen thuộc với các lập trình viên bởi nó thuộc một trong những kiểu tấn công website nguy hiểm nhất hiện nay và gây ra nhiều thiệt hại cho các doanh nghiệp. Tuy nhiên, vẫn có nhiều người chưa nhận thức được sự nguy hiểm của nó.

Vì vậy, trong bài viết này, Bizfly sẽ giới thiệu đến bạn Sql injection là gì? Mức độ nguy hiểm và cách ngăn chặn lỗ hổng bảo mật này ra sao?

Sql injection là gì? 

Sql injection (SQLi) là một kỹ thuật hack web bằng cách lợi dụng các lỗ hổng và truy vấn trong các kênh đầu vào của ứng dụng web để chèn thêm một đoạn SQL, làm sai lệch câu truy vấn ban đầu.

Mục đích nhằm khai thác, ăn cắp hay xáo trộn các thông tin, dữ liệu nằm trong phần phụ trợ của web - nơi có những dữ liệu có giá trị và nhạy cảm nhất. 

sql injection là gì

Sql injection lợi dụng các lỗ hổng để ăn cắp hay xáo trộn các thông tin

Sql injection cho phép những kẻ tấn công website có khả năng thực hiện được các thao tác tương tự như một người quản trị web. Điều này không những gây cản trở sự hoạt động của ứng dụng mà thậm chí họ còn chiếm được quyền truy cập quản trị vào các máy chủ.

Mức độ nguy hiểm của sql injection 

Nói một cách tổng quát nhất về Sql injection thì có lẽ bạn cũng đã nhận ra được phần nào mức độ nguy hiểm của nó. Tuy nhiên nó còn nguy hiểm hơn những gì ta nghĩ bởi những hậu quả mà nó gây ra rất lớn.

  • Với Sql injection, hacker có thể dễ dàng truy cập vào một phần hay toàn bộ các dữ liệu có trong hệ thống và gây ra những thiệt hại lớn đến mức khổng lồ cho các ứng dụng web khi những dữ liệu trong database bị lộ ra ngoài.
  • Sự nổi tiếng của Sql injection đối với các developer và hacker nằm ở tool tấn công Sql injection dành cho các “dân ngoại đạo" - những người không có chút kiến thức nào về lập trình.
  • Ảnh hưởng vô cùng nghiêm trọng đến hình ảnh của doanh nghiệp khi các thông tin, dữ liệu của khách hàng bị tiết lộ. Khách hàng sẽ không còn tin tưởng và sẽ chuyển qua sử dụng dịch vụ của doanh nghiệp khác và dẫn đến sự phá sản của doanh nghiệp chủ.
  • Lỗ hổng Sql injection cũng làm ảnh hưởng rất lớn đến khách hàng. Chỉ cần mật khẩu của một tài khoản bị lộ thì những tài khoản còn lại cũng sẽ bị lộ theo bởi họ thường sử dụng chung một mật khẩu cho nhiều tài khoản.
  • Sự tấn công của Sql injection không chỉ giúp các hacker đọc được dữ liệu mà còn có thể chỉnh sửa được dữ liệu. Họ có thể lợi dụng điểm này để xoá toàn bộ dữ liệu và làm cho hệ thống web dừng hoạt động.

Cách thức hoạt động của lỗ hổng sql injection 

Để giúp bạn có thể hiểu hơn Sql injection và tìm ra được cách ngăn chặn lỗ hổng bảo mật đó thì việc tìm hiểu cách thức hoạt động của nó là vô cùng quan trọng:

Cách thức hoạt động của lỗ hổng sql injection

Cách thức hoạt động của lỗ hổng sql injection

  • Bước 1: Tìm kiếm các trang web cho phép submit dữ liệu ở bất kỳ một trình tìm kiếm nào đó trên mạng.
  • Bước 2:  Thử gửi các field tên đăng nhập, mật khẩu hoặc field id bằng hi' or 1=1-- để kiểm tra những chỗ yếu của trang web.
  • Bước 3: Thông qua các yêu cầu của người dùng được cho phép bởi website, hacker sẽ gửi lệnh SQL độc hại đến các máy chủ cơ sở dữ liệu.
  • Bước 4: Sử dụng sp_makewebtask để nhận và ghi các output của SQL Query ra file HTML.
  • Bước 5: Nhận các thông tin quan trọng từ các thông báo lỗi của máy chủ SQL để xác nhận tên của table.
  • Bước 6: Xác định và khai thác tên của các cột có trong table.
  • Bước 7: Sau khi đã xác định được tên của column và table, hacker có thể dễ dàng thu thập được những thông tin quan trọng từ nó.
  • Bước 8: Thêm các ký tự alphabet và numeric string để gây thất bại cho quá trình chuyển đổi từ từ text sang số của máy chủ.
  • Bước 9: Sử dụng các statement update hoặc insert để tiến hành sửa đổi hoặc tạo mới record của table.

Xem thêm thông tin về kỹ thuật tấn công website bằng cách giả mạo chủ thể Csrf tại đây: https://bizfly.vn/techblog/csrf-la-gi.html

Cách ngăn chặn lỗ hổng bảo mật sql injection 

Dưới đây là cách ngăn chặn lỗ hổng bảo mật Sql injection mà bạn có thể tham khảo:

Cách ngăn chặn lỗ hổng bảo mật sql injection

Cách ngăn chặn lỗ hổng bảo mật sql injection

  • Bạn tuyệt đối không được tin tưởng những input mà người dùng nhập vào. Việc bạn cần làm chính là xác thực mọi dữ liệu trước khi sử dụng các câu lệnh SQL.
  • Sử dụng các thủ tục được lưu trữ để xem xét toàn bộ các input và trừu tượng hoá các lệnh SQL. Việc này giúp các cú pháp lệnh SQL không bị ảnh hưởng.
  • Chuẩn bị sẵn các lệnh bao gồm tạo truy vấn SQL (hành động đầu tiên) và xử lý toàn bộ các dữ liệu đã được gửi tương tự như những tham số.
  • Các thông báo lỗi phải tuyệt đối chính xác và tránh tiết lộ những vị trí xảy ra lỗi hay những thông tin, chi tiết mang tính giá trị, nhạy cảm.
  • Khi nhận được các input người dùng, tham số từ URL hay các giá trị từ cookie thì bạn cần loại bỏ các ký tự meta và extend như /\, NULL, LF, CR,... trong các string.
  • Trước khi query SQL, bạn nên chuyển các giá trị numeric sang integer hoặc dùng ISNUMERIC để chắc chắn hơn nó là một số integer.
  • Xoá các stored procedure không dùng như xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask trong database master.

Hy vọng với bài viết này, bạn đã có thêm những kiến thức mới về Sql injection và hiểu được Sql injection là gì để có thể tìm cách phù hợp để ngăn chặn được sự tấn công của nó. Nếu bạn là một nhà quản trị website thì việc tìm hiểu về những kiến thức này là rất cần thiết để có thể đảm bảo được sự an toàn cho các dữ liệu trong ứng dụng web của mình.

 

Nhận ngay tin tức mới nhất từ Bizfly

Nhận ngay tin tức mới nhất từ Bizfly