Chống Sql Injection bằng base64?

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
PHP:
$username=$_POST['username'];
$password=$_POST['password'];
$sql=mysql_query("select * from user where username='$username' and password='$password'");
$member=mysql_fetch_array($sql);
...
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
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 :))
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Re: Chống Sql Injection bằng base64?

Cách của bạn hay quá, từ nay mình sẽ không dùng mysql_real_escape_string nữa, chuyển sang dùng base64_encode
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Chống Sql Injection bằng base64?

DCT_94;28563 đã viết:
Cách của bạn hay quá, từ nay mình sẽ không dùng mysql_real_escape_string nữa, chuyển sang dùng base64_encode
Chào bạn, cách này làm khối lượng thông tin tăng lên đáng kể đấy, bạn nên cân nhắc kĩ dự liệu nào nên encode dữ liệu nào không
ví dụ, bạn làm 1 trang tin tức thì nếu encode cả 1 bài viết thì xem ra khá e ngại ấy
Có ý kiến nào thêm thì bạn góp ý cho mình nhé :))
P/S: mysql_real_escape_string ở phiên bản php sau này chưa có bài viết liên quan nào nhắc đén việc bypass nó nên hiện tại dùng vẫn khá ổn đấy bạn (nhưng đừng dùng cho kiểm tra đăng nhập, kiểm tra đăng nhập nên dùng addslashes)
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bên trên