Code phòng chống DDOS Website hiệu quả
- Ngọc Thanh
- 29916
- 18/06/2023
Tham khảo bài viết Code phòng chống DDOS Website hiệu quả, tìm hiểu tất cả các phương pháp tốt nhất để giúp cho trang web của bạn khỏi bị tấn công DDOS, giúp cho trang web hoạt động tốt hơn, chi tiết như nào hãy cùng chúng tôi phân tích:
Code phòng chống DDOS Website hiệu quả
Mục Lục [Ẩn]
1. Tạo file cache html hạn chế truy vấn nhiều lần cùng lúc các câu lệnh sql
- Khi web bị ddos, sẽ khiến cho trang web bị yêu cầu load và truy vấn dữ liệu đến cơ sở dữ liệu mysql nhiều lần, điều này khiến cho server bị chậm hoặc bị treo
- Để giải quyết vấn đề này, lúc các câu lệnh truy vấn cơ sở dữ liệu, ta tạo câu lệnh đó ra các file cache html và quy định thời gian cho file html đó
- Nếu file html cache chưa tồn tại thì khi lần lướt web đầu tiên sẽ tạo ra file đó, tồn tại theo thời gian do chúng ta qui định, các lần lướt web sau đó sẽ không cần truy vấn cơ sở dữ liệu nữa mà sẽ lấy file cahe html cho hiện ra, lúc này sẽ không đụng chạm gì nhiều đến dữ liệu mysql nên web sẽ load nhanh hơn
- Trong quản trị mỗi khi cập nhật bài viết thuộc danh mục nào thì chúng ta sẽ xóa file cache html của danh mục đó, xóa từng mục khi cập nhật như vậy sẽ hạn chế xóa 1 lúc tất cả file cache html, mục đích xóa file html là để khi lướt web lại lần đầu tiên sẽ lấy thông tin mới nhất
- Tiến hành tạo, xóa file cache html
<?php
$cacheFilextc = 'cachefile/cache-xtc.html';
if (file_exists($cacheFilextc) && filemtime($cacheFilextc) + 864000000000000000 > time()) {
include($cacheFilextc);
goto xtc;
}
ob_start();
?>
Đoạn code mở thẻ tạo file html từ php
<?php
$cachextc = fopen($cacheFilextc, 'w');
fwrite($cachextc, ob_get_contents());
fclose($cachextc);
ob_end_flush();
xtc:
?>
Đoạn code đóng thẻ tạo file html từ php
Khởi tạo ra file cache cache-xtc.html
Sau khi tạo file cache-xtc.html thì file sẽ tự động tạo lúc truy cập trang web lần đầu tiên với thời gian quy định trong code, Vậy là tạo cache html xong, lần thứ 2,3 load thì web sẽ lấy file html này chạy chứ không vào database lấy dữ liệu nữa.
Trong trang quản trị mỗi lần thêm xóa sửa cập nhật mà có liên quan tới file cache html nào thì xóa ngay file html cache đó, đặt hàm xóa file cache html ngay sau đoạn code update, add, delete trong quan trị, để khi lướt web lại sẽ cập nhật mới lại thông tin web bằng file cache
2. Chống Iframe
- Kẻ tấn công sẽ tạo 1 iframe bên website khác và nhúng website cần đánh vào, Sau đó họ dùng câu lệnh refresh nhiều lần bên website đã nhúng iframe
- Để chống lấy website mình nhúng iframe thì ta chèn 1 đoạn javascript
<script>
if (top.location != self.location) {
top.location = self.location;
}
</script>
Nếu trang web nào nhúng iframe web mình thì sẽ tự động chuyển hướng url thẳng về web mình luôn chứ không còn f5 nhiều lần bên kia được nữa
Bên phải góc màn hình trình duyệt hiện thông báo chặn chuyển hướng, nếu bình thường chấp nhận chuyển hướng thì chạy thẳng luôn về web mình, còn web không gắn đoạn js này thì sẽ không chuyển hướng hoặc không có thông báo này khi web khác nhúng iframe web mình.
3. Giới hạn lượt truy cập website tại một thời điểm
- Dùng hàm php để giới hạn số người truy cập cùng 1 thời điểm, như vậy khi gặp doss sẽ giúp khỏi bị đánh sập web
- Khi người dùng truy cập vào trang website, sẽ tạo ra kết nối với cơ sở dữ liệu (CSDL) với mục đích lấy thông tin và trả về thông qua hiển thị của website. Mỗi máy chủ đều có hạn định lượt truy cập và nếu vượt quá mức này thì việc truy cập sẽ trở nên khó khăn. Kẻ tấn công sẽ lợi dụng điều này để tạo ra các truy cập ảo nhằm đánh sập trang web và phá hỏng CSDL website.
<?php
gioihantruycap(1001);
?>
Đặt funtion php này ngay đầu trang web
<?php
function gioihantruycap($numer) {
if (THIS_IS == 'WEBSITE' && PHP_OS == 'Linux' and @file_exists ( '/proc/loadavg' ) and $filestuff = @file_get_contents ( '/proc/loadavg' )) {
$loadavg = explode ( ' ', $filestuff );
if (trim ( $loadavg [0] ) > $numer) {
print '';
print 'Lượng truy cập đang quá tải, mời bạn quay lại sau vài phút.';
exit ( 0 );
} } }
?>
Viết hàm giới hạn người truy cập cùng 1 lúc
4. Chống tải lại trang website có ác ý (Không nên dùng)
- Một số trang web có hướng dẫn dùng code đặt điều kiện nếu không dùng chuột thì sẽ chuyển về 1 file html khác
Kẻ tấn công cũng có thể dùng 1 hình thức khác là dùng phím F5 liên tục có chủ ý. Ngoài ra, họ cũng có thể dùng 1 phần mềm được lập trình sẵn với mục đích tải lại trang web liên tục sau những khoảng thời gian định sẵn. Điều này sẽ khiến cho trang web của bạn tải lại (reload) liên tục. Việc này sẽ làm trang web chạy chậm vì những kết nối ảo.
Với kiểu tấn công này, khuyên bạn nên áp dụng cách sau đây. Bạn hãy thiết lập tập tin .htaccess với nội dung như sau:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?domain.com [NC]
RewriteRule !antiddos.phtml http://www.domain.com/antiddos.phtml?%{REQUEST_URI} [QSA]
Sau đó tạo thêm một một tập tin antiddos.phtml có nội dung như sau:
<?php
$text = $HTTP_SERVER_VARS['QUERY_STRING'];
$text = preg_replace(" #php&#si",'php?',$text);
echo('<center><a href=http://www.domain.com/?'.$text.'><font color=red size=5 face=Monotype>[CLICK HERE TO ENTER]</font></a</center>');
?>
Bước tiếp theo, bạn sẽ upload 2 tập tin này lên thư mục gốc của website. Khi đó, nếu là lượt truy cập đầu tiên, thì sẽ có thông báo yêu cầu nhấn chuột thì mới vào được website. Các lượt truy cập sau sẽ không yêu cầu điều này. Và các phần mềm DDOS được lập trình sẽ bị chặn lại ở bước click chuột để vào trang web ở lần truy cập đầu tiên.
- Trường hợp này nếu không dùng chuột thì chuyển hướng về file antiddos.phtml thì không hợp lý, vẫn có trường hợp khi gõ tên miền xong nhấn enter mà không dùng chuột thì vẫn bị chuyển hướng về file html, chuyển hướng kiểu vậy gây rất ức chế cho khách vì khó vào được web, và khi seo web cũng không ổn.
Xem thêm bài viết SEO là gì?
- 2 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *