1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. An ninh - Bảo mật >

CHƯƠNG IV: HẬU QUẢ CỦA SQL INJECTION VÀ CÁCH PHÒNG CHỐNG SQL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.55 MB, 30 trang )


BÁO CÁO ĐỒ ÁN MÔN HỌC NHÓM 05

UNION) do người dùng nhập vào. Nên sử dụng thư viện/function được

cung cấp bởi framework. Viết lại từ đầu vừa tốn thời gian vừa dễ sơ sót.





Không cộng chuỗi để tạo SQL: Sử dụng parameter thay vì 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 cần dùng code để check.







Không hiển thị exception, message lỗi: Hacker dựa vào message lỗi để

tìm ra cấu trúc database. Khi có lỗi, ta chỉ hiện thông báo lỗi chứ

đừng hiển thị đầy đủ thông tin về lỗi, tránh hacker lợi dụng.







Phân quyền rõ ràng trong DB: Nếu chỉ truy cập dữ liệu từ một số bảng,

hãy tạo một account trong DB, gán quyền truy cập cho account đó

chứ không nên dùng account root hay sa. Lúc này, dù hacker có inject

được sql cũng không thể đọc dữ liệu từ các bảng chính, sửa hay xoá dữ

liệu.







Backup dữ liệu thường xuyên: Dữ liệu phải thường xuyên được backup

để nếu có bị hacker xoá thì ta vẫn có thể khôi phục được.







Viết lại đường dẫn của website có thể phòng được lỗi SQL Injection, vì

hacker thường phải tìm một sơ hở của website trên đường link hoặc trên

form nhập liệu của người dùng, khi không nhìn thấy biến query thì hacker

phải tìm cách khác để thử lỗi.







Lọc kĩ những gì người dùng nhập

Với số người dùng nhập vào, để ăn chắc các bạn lọc qua các hàm như:

$num = ( int ) $_POST['num'];

$num = is_numeric ( $num ) ? $num : 0;

Ví dụ sử dụng sprinf:

$data = sprintf('select * from %s where data = %d limit 1', $table,

$must_be_number );

Sử dụng kết hợp với mysql_real_escape_string() để câu SQL được an

toàn:

$data = sprintf('select * from %s where data = %d limit 1', $table,

mysql_real_escape_string($must_be_number ) );



SV BM. MẠNG MÁY TÍNH – KHÓA 58



Page 28



BÁO CÁO ĐỒ ÁN MÔN HỌC NHÓM 05





Sử dụng tường lửa: Ứng dụng web (Web Application Firewall) để ngăn

chặn các lỗ hổng SQL Injection. Khi sử dụng dịch vụ máy chủ Cloud do

EXA cung cấp để làm web hosting chạy các ứng dụng web sẽ được tích

hợp ngay dịch vụ Web Application Firewall để ngăn chặn các lỗ hồng SQL

Injection tại http://exa.vn.



SV BM. MẠNG MÁY TÍNH – KHÓA 58



Page 29



BÁO CÁO ĐỒ ÁN MÔN HỌC NHÓM 05



KẾT LUẬN

Lỗi SQL Injection là lỗi rất phổ thông, tuy nhiên phòng chống nó là việc hoàn toàn không

khó, chỉ cần bạn luôn tự nhủ là với những gì người dùng nhập ta không thể tin bất kì điều

gì, phải xác định lại chúng hoặc sử dụng phương pháp ép kiểu hoặc thêm dấu “” vào

trong biến người dùng nhập ( addslashes() ) sẽ hạn chế tối đa lỗi này !

Với các mã nguồn mở, chúng ta có thể an tâm phần nào vì hầu hết các câu query đều

được lọc qua lọc lại một cách kĩ lưỡng, chỉ phát sinh lỗi này khi chúng ta viết không đúng

quy chuẩn mà thôi, các bạn cũng nên để ý sử dụng plugin và module của người dùng xác

định được download trên trang chủ !



SV BM. MẠNG MÁY TÍNH – KHÓA 58



Page 30



Xem Thêm
Tải bản đầy đủ (.docx) (30 trang)

×