header-object

Bảo mật trong lập trình web bằng PHP và MySQL - Phần 2

1. Sự ngây ngô và ngó lơ với module search

Khi bạn viết một module search chính xác thì sẽ kết hợp php với mysql thông qua câu select với điều kiện “=”. Và không chú trọng lắm vấn đề nhốt biến trong truy vấn.

 SELECT * FROM `product` WHERE `name`  = $search;

Với $search = $_GET[‘search’]; chính là điều kiện trên thanh địa chỉ của bạn, ví dụ: http://domain.com/index.php?search=dtdd
Vậy nếu như người truy cập gõ vào thanh address:
http://domain.com/index.php?search=dtdd union select * from user. Khi đó họ sẽ thấy luôn các thông tin của bản user, công việc còn lại cũng chỉ là tấn công thôi.

2. Tiếp với tuyệt chiêu 1/0

Nếu sự ngây ngô của bạn vô tình được cứu vớt bởi config của mysql hay gì đó không hiển thị ra list user của bản user thì sẽ bị tấn công với chiêu này.

1/0 là một phép chia sai, không có số nào chia được cho 0 cả, vậy mới là cái hay! Hay ở chổ đó là nếu như gán điều kiện nào đó xảy ra thì 1/0 xảy ra và 1/0 mà xảy ra tức là xảy ra lỗi vì 1 không bao giờ chia được cho 0.

Bắt đầu dò tìm username với 1/0: http://domain.com/index.php?search=dtdd union select  1/0 from user where username=admin

Nếu có tồn tại user admin thì sẽ trả về 1/0 và trả về lỗi. Rồi tiếp tục show pass của user đó ra: http://domain.com/index.php?search=dtdd union select  password from user where username=admin

Cách khắc phục nằm ở phần 1(khắc phục 2 vấn đề)

3. Flood & Fake

3.1 Form đăng ký mail nhận tin, đắng ký thành viên, nhận mã giảm giá,...

Khi bạn làm các chức năng trên thì hầu như chỉ nghĩ đến việc chạy ổn là được, chạy ổn ở đây nằm lại ở mức độ là nhập vào ấn submit là insert được vào CSDL.

3.2 Xem nhẹ quá trình cũng như không phân tích triệt để

Khi đó các bạn chỉ xét điều kiện đúng là cho vào CSDL và không hạn chế gì cả, nhưng nếu các bạn bị một toolkit nào đó chạy auto và nhập vào dữ liệu đúng liên tục hàng giờ thì CSDL của bạn sẽ tiêu tùng vì vượt ngoài tầm kiểm soát và chịu đựng của server (tràn database).

3.3 Phân tích form đăng ký nhận tin qua email

Email được nhập vào phải chuẩn ( This email address is being protected from spambots. You need JavaScript enabled to view it. , This email address is being protected from spambots. You need JavaScript enabled to view it. )
Khi nhập vào kiểm tra xem mail có đăng ký chưa, nếu chưa thì add vào CSDL, còn rồi thì thông báo đến người đăng ký biết là họ đã đăng ký.

Riêng vấn đề cho add vào CSDL thì các bạn nên thêm một bước nữa chính là xác nhận qua (captcha) để chống vấn đề spam và làm hại đến server vì bị fake thông tin để flood.

Như vậy, các thông tin liên quan đến form nhập liệu có insert vào CSDL thì nên chú ý phân tích đến quá trình flood và fake thông tin. Vấn đề cơ bản và dễ dàng nhất đó chính là tạo captcha theo google ở: http://www.google.com/recaptcha

Hướng dẫn nhúng captcha google vào website tùy theo ngôn ngữ của bạn, với php thì tại đây.

Phần 1 xem tại đây

GV Huỳnh Công Đức

Bình luận  

 
0 #4 Tuan Duy Thứ 4-03-17 17:08
[quote name="Tuan Duy" Thiết kế web Hải Nam. Thiết kế web chuẩn seo, giá tốt cho khách hàng. Liên hệ: 0985.431.797
Trích dẫn
 
 
0 #3 Tuan Duy Thứ 4-03-17 17:07
http://thietkewebhainam.com/ Thiết kế web Hải Nam. Thiết kế web chuẩn seo, giá tốt cho khách hàng. Liên hệ: 0985.431.797
Trích dẫn
 
 
0 #2 Tuan Duy Thứ 4-03-17 17:06
Thiết kế web Hải Nam. Thiết kế web chuẩn seo, giá tốt cho khách hàng. Liên hệ: 0985.431.797
Trích dẫn
 
 
-2 #1 quyenquoc Thứ 2-08-13 08:49
hay quá
Trích dẫn
 

Thêm ý kiến


Security code
Làm mới


2

Facebook

Thống kê truy cập

Hiện có 386 khách đang truy cập
2546512