Bài penetration testing ” Quá trình tấn công trang web bị lỗi bind SQL Injection ” mình đã làm lâu rồi , nhưng bây giờ muốn chia sẻ cho các bạn cùng xem để biết về 1 kỹ thuật tấn công web xa xưa ,và các bạn có thể tìm hiểu thêm về bind SQL injection một trang web là như thế nào và cách phòng ra sao nhé .
Bài Penetration Testing
Cách phòng chống lỗi SQL Injection .
SQL Injection Là một trong những kiểu hack web phổ biến, Bằng cách inject các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username và password, remote execution, dump data và lấy root của SQL server.
Hầu hết các lỗi SQL Injection đều là do câu lệnh SQL sai hoặc do User làm cho câu lệnh SQL sai , không thực hiện đúng chức năng của nó
> Hạn chế bị phát hiện lỗi:
Attacker dựa vào những lỗi trong lập trình ứng dụng để tấn công và cụ thể attacker dựa vào các dấu hiệu để phát hiện ứng dụng bị lỗi. Vậy việc làm cho các dấu hiệu đó bị che đi, trở nên khó hiểu hơn, hoặc biến mất…
Thông thường thì để kiểm tra lỗi SQL injection , ta thường thêm dấu ‘ (dấu nhấy) vào phía sau các địa chỉ có dạng: teo.php?id=1 hoặc teo.php?id= vd: http://site.com/teo.php?id=1′ và http://site.com/teo.php?id=’
Bảo vệ các câu truy vấn SQL là bằng cách kiểm soát chặtchẽ tất cả các dữ liệu nhập nhận được từ đối tượng Request (Request, Request.QueryString, Request.Form, Request.Cookies, and Request.ServerVariables).
> Phòng chống từ bên ngoài
Giải pháp này sẽ dùng tường lửa đặc biệt để bảo vệ bạn khỏi những ứng dụng dùng việc truy cập database với mục đích xấu. Chúng ta cần lưu ý rằng attacker tương tác với ứng dụng web thông qua một trình duyệt với kết nối từ xa. Sau đó, ứng dụng gởi yêu cầu đến database. Như vậy chúng ta có thể ngăn chặn các tấn công giữa attacker với ứng dụng, giữa ứng dụng với database và ngay cả trên chính bản thân database đó.
> Cải thiện dữ liệu nhập vào
Cách phòng chống thực sự để chống lại SQL Injection là kiểm tra và làm đúng các câu truy vấn. Như chúng ta đã đề cập, lỗi này là do ứng dụng không kiểm tra dữ liệu nhập vào của người dùng. Do đó người dùng có thể thay đổi, chỉnh sửa, tham số hoặc thêm cả một thực thể truy vấn vào câu lệnh. Vì thế mỗi dữ liệu nhập của người dùng cần được theo dõi và có những ràng buộc nhất định.
> Để ứng dụng thật sự tránh được tấn công SQL Injection cần triển khai một số việc sau:
_Không trả về những trang lỗi có thông tin nhạy cảm. _iCải thiện dữ liệu nhập vào càng tốt càng có khả năng loại bỏ tấn công. iii. Hạn chế tối đa quyền truy vấn.. _Hạn chế tối đa quyền truy vấn. _Thường xuyên kiểm tra, quét ứng dụng bằng những công cụ mới nhất. _Dùng lá chắn tốt nhất có thể cho từng lớp tương tác.
ThinhNguyen