Nội dung Giải pháp chống flood cho site
Flood hiểu nôm na có nghĩa là tràn ngập - Khi bạn thiết kế một FORM để nhập
dữ liệu, thì bất kỳ ai cũng áo thể view sources để xem cấu trúc HTML của FORM
bạn thiết kế, vì vậy nếu site bạn không chống flood, hackers có thể dễ dàng
flood site bạn, làm DB của bạn có thể bị tràn ngập và xuất hiện nhiều dữ liệu dư
thừa.
Thông thường thì trong khi thiết kế một FORM bất kỳ thì phải thoả mãn cấu trúc
như sau:
Đoạn code trên sử method="post" có nghĩa là phương pháp lấy dữ liệu là POST,
ngoài nó ra bạn còn có thể dùng GET để lấy dữ liệu.
Có thể hiểu nếu method="GET" là dùng nhập dữ liệu ngay trên thanh địa chỉ, điều
này cũng khó kiểm soát dữ liệu vì hackers có thể trực tiếp flood qua đường này
nếu như không chống flood.
Còn nếu method="POST" thì bắt buộc phải được nhập qua 1 FORM nhất định, hiện tại
hầu hết các site điều thiết lập method là POST vì dễ dàng kiểm tra dữ liệu và
nhất là phòng chống SQL injection vì ít có hackers để ý đến các FORM lắm.
Có rất nhiều phương pháp để chống flood, tôi xin trình bày vài cách để bạn tham
khảo: Sử dụng session, tạo 1 field trong table dùng trong việc lưu trữ IP của
máy đang truy cập (Cách này hơi rắc rối nên tôi không trình bày ở đây).
Phương pháp chống flood bằng cách sử dụng SESSION:
1. Tạo FORM: Việc tạo một FORM để nhập dữ liệu không khó, nếu không biết tạo xin
hỏi tại box khác vì box này chỉ dành tham khảo về bảo mật ứng dụng web thôi :)
2. Tạo 1 file PHP tên là anti_flood.php, với code sau:
view plainprint?
-
-
- session_start();
-
- $timeout = 60;
- $session_name = "action_time";
-
- if ( isset($_SESSION["{$session_name}"]) && ( $_SESSION["{$session_name}"]
>= time() - $timeout ) )
- {
- print "Làm ơn đợi {$timeout} giây rồi quay lại kiếm tôi!!";
- return false;
- }
- $_SESSION["{$session_name}"] = time();
-
- ?>
= time() - $timeout ) ) { print "Làm ơn đợi {$timeout} giây rồi quay lại kiếm
tôi!!"; return false; } $_SESSION["{$session_name}"] = time(); ?>
Giải thích:
Dòng thứ 3 dùng session_start() để khởi động dữ liệu của session (Phiên làm việc).
Dòng kế tiếp là để thiết lập thời gian cho một session, mặc định là 60 giây.
Dòng tiếp theo là $session_name, đơn giản chỉ là đặt tên cho session.
Dòng tiếp theo nữa là để kiểm tra thời gian của phiên làm việc trước đó (nếu
trước đó có một session đã thực hiện và session đó phải lớn hơn hoặc bằng thời
gian hiện tại trừ cho thời gian thiết lập cho mổi session).
+ Điều đó có nghĩa là nếu session đã thực hiện trước đó (session thứ 1) chỉ cách
session thứ 2 dưới 60 giây (đây là thời gian do bạn qui định: $timeout = 60) thì
sẽ được xét vào dạng Flood data, và ngược lại thì sẽ cho qua và xác nhận hợp lệ.
Và dòng cuối cùng là thiết lập thời gian "hiện tại" cho session "hiện tại".
Có 2 cách để sử dụng đoạn code trên:
Cách 1: Load trực tiếp file anti_flood.php, áp dụng cho site có ít FORM cần
chống flood.
view plainprint?
-
-
- require_once("anti_flood.php");
-
- ?>
Cách 2: Là copy trực tiếp đoạn code của tôi rồi sửa lại tên session để dễ phân
biệt cho site có nhiều FORM cần chống flood:
view plainprint?
-
-
- require_once("anti_flood.php");
-
- ?>
Chúc bạn thành công!!!
lyhuuloi.
(Cung cấp bởi sanchoituoitre.vn)
Source Giải pháp chống flood cho site: ThongTinBaoMat.Com,Tác giả php.net.vn Giải pháp chống flood cho site Tags Bảo | mật | ứng dụng | Web | bảo mật | và | tối ưu | băng thông | Mạng Riêng Ảo | VPN | Lợi Ích | Những bài viết tương tự Giải pháp chống flood cho site: Giải pháp bảo mật và phân tích môi trường NetBotz thế hệ mới | Chứng chỉ Internet giả mạo đe dọa người dùng Gmail | FireFox và Chrome cập nhật để ngăn chứng thư giả | 4 phần mềm diệt virus miễn phí tốt nhất cho Windows | Apache vá lỗ hổng DoS cho máy chủ web | Tin tặc chiếm đoạt hơn 200 chứng chỉ số SSL | Cách "chữa cháy" khi xóa nhầm khóa registry | Windows Update an toàn với các chứng chỉ SSL | Tội phạm ảo lợi dụng các site từ thiện trực tuyến | 4 mẹo ngăn chặn tấn công giả mạo |