Cơ bản về SQL Injection – part III (Phòng chống)

Cơ bản về SQL Injection – part III (Phòng chống)

Trong các ví dụ ở các phần trước trên, ta thấy lỗ hổng SQL injection xảy ra bởi vì các biến được nhập vào từ người dùng không được kiểm tra trước khi query tới cơ sở dữ liệu. Đó chính là cơ chế chung nhất của lỗ hổng SQL Injection.

Phòng chống SQL Injection

Lỗ hổng SQL Injection xảy ra khi kết hợp cả 2 điều kiện:

  • Có sự truy vấn tới cơ sở dữ liệu
  • Câu truy vấn chưa được kiểm tra sự an toàn.

Có thể khẳng định chắc chắn rằng, một biến được nhập vào từ người dùng, qua nhiều bước xử lý trung gian mà không có bất cứ bước nào kiểm tra sự an toàn của nó rồi đem query tới cơ sở dữ liệu thì chắc chắn sẽ mắc lỗ hổng SQL Injection. Đây cũng chính là điểm mấu chốt để nhận diện và phòng chống lỗ hổng SQL Injection. Phương pháp hữu hiệu nhất để chống tấn công SQL Injection là kiểm soát kỹ giá trị nhập vào từ người dùng:

  • Đối với các biến kiểu số: giới hạn số ký tự nhập vào.
  • Đối với các biến kiểu xâu: chặn dấu nháy đơn, nháy kép.

Ngoài ra, đối với hệ quản trị MSSQL Server nên thực hiện các thao tác sau:

  • Tắt các thông báo lỗi của server
  • Sử dụng stored procedure thay vì dùng query thông thường
  • Xóa các stored procedure nguy hiểm không dùng đến như: xp_cmdshell, xp_startmail, xp_sendmail,…
Khi trích dẫn bài viết từ tek.eten.vn, xin vui lòng ghi rõ nguồn. Chúng tôi sẽ rất cảm ơn bạn!