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