luongtankhang123
W-------
-
02/07/2013
-
14
-
47 bài viết
Chống Sql Injection bằng base64?
Các trang web hiện nay, lý do dính sql injection chủ yếu là do không có kiến thưc về bảo mật hay ngủ gục lúc code hoặc cũng có thể lỗi framework
Hai vấn đề sau mình không bàn tới )
Ở topic này, mình muốn lập ra để thảo luận về việc mã hóa toàn bộ dữ liệu người dùng sang base64 để tránh sql injection cho dân không có kiến thức bảo mật, bác nào có cách bypass thì chỉ mình với nhé
Tham khảo base64 tại đây
Sql injection được phát hiện đơn giản qua việc thêm ' hoặc " vào cuối cấu lệnh SQL, lúc này lỗi cú pháp sẽ được thông báo, blah blah tại đây
Chúng ta thấy rõ, ở đoạn code trên lập trình viên rất ẩu và để hacker dễ dàng xâm nhập hệ thống bằng các phương pháp bypass thông thường.
Nhưng khi chúng ta mã hóa ra base64 thì các truy vấn do user inject sẽ được mã hóa và bị vô hiệu hóa
Ưu điểm: Đang ngóng bình luân để bổ sung
- Tránh được lỗi sql injection
Nhược điểm:
- Dữ liệu chuyển từ 8bit sang 6bit nên khối lượng thông tin bị tăng đáng kể
- Truy cập phpmyadmin nhìn rối mắt
Cách bypass:
Đang ngóng )
Hai vấn đề sau mình không bàn tới )
Ở topic này, mình muốn lập ra để thảo luận về việc mã hóa toàn bộ dữ liệu người dùng sang base64 để tránh sql injection cho dân không có kiến thức bảo mật, bác nào có cách bypass thì chỉ mình với nhé
Tham khảo base64 tại đây
Sql injection được phát hiện đơn giản qua việc thêm ' hoặc " vào cuối cấu lệnh SQL, lúc này lỗi cú pháp sẽ được thông báo, blah blah tại đây
PHP:
$username=$_POST['username'];
$password=$_POST['password'];
$sql=mysql_query("select * from user where username='$username' and password='$password'");
$member=mysql_fetch_array($sql);
...
Nhưng khi chúng ta mã hóa ra base64 thì các truy vấn do user inject sẽ được mã hóa và bị vô hiệu hóa
PHP:
$username=base64_encode($_POST['username']);
$password=base64_encode($_POST['password']);
$sql=mysql_query("select * from user where username='$username' and password='$password'");
$member=mysql_fetch_array($sql);
...
Ưu điểm: Đang ngóng bình luân để bổ sung
- Tránh được lỗi sql injection
Nhược điểm:
- Dữ liệu chuyển từ 8bit sang 6bit nên khối lượng thông tin bị tăng đáng kể
- Truy cập phpmyadmin nhìn rối mắt
Cách bypass:
Đang ngóng )