banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận bảo mật Chống DOS bằng cho php script nhờ kết hợp với memcache.  XML
  [Programming]   Chống DOS bằng cho php script nhờ kết hợp với memcache. 16/06/2009 11:33:18 (+0700) | #1 | 183665
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Hi!
Thấy vài member thảo luận về code chống DOS. Tớ góp 1 tí cho vui.
Đây là đoạn code tớ đã áp dụng 1 cho 1 site của tớ, nó có khoảng 5000 keep-alive session, 10K IP khác nhau truy cập hàng ngày, site cung cấp thông tin trực tuyến nên mỗi client request khoảng 5-7 giây 1 lần, với 18-20 triệu hit/ngày (cường độ khá kinh khủng đấy).

code này áp dụng cho php. Phải kết hợp với memcache để đảm bảo tốc độ (1 ứng dụng khá là ... hay đấy). Nếu dùng mysql cũng đc, với memory table, nhưng ko hay lắm vì mysql nhiều overhead hơn nên chậm hơn.

Code:
$antiflood = 4; // anti-flooding protect time in seconds.

	$MCobj = new Memcache;
	if(!$MCobj->pconnect($MCHost, 11211))
		$MCHost = null;
	else if($debug) echo "<debug>Connected to cached</debug>";

//Anti flooding
$pattern = '/^(10\.|192\.168\.|127\.)/';
if($MCobj && !preg_match($pattern,$_SERVER['REMOTE_ADDR'])) {
        $protectedkey = 'ip'.$_SERVER['REMOTE_ADDR'].'-'.$_SERVER['SCRIPT_FILENAME'];
	$isquery = $MCobj->get($protectedkey);

	if($isquery) { // query too fast
		echo 'Server too busy, please visit later.;
		exit();
	}
	$MCobj->set($protectedkey, 1, 0, $antiflood);
}


Chúc các bạn thành công.
[Up] [Print Copy]
  [Programming]   Chống DOS bằng cho php script nhờ kết hợp với memcache. 18/06/2009 00:29:35 (+0700) | #2 | 183793
[Avatar]
micr0vnn
Member

[Minus]    0    [Plus]
Joined: 29/06/2006 15:52:34
Messages: 67
Offline
[Profile] [PM]
Của tui 1 ngày hơn 30k Ip.Ngoài ra còn bị DDOS nữa.... code nào cũng đấp chiếu.
Chỉ có nước đưa đầu ra cho nó đập thôi..

CÒn cách khác la mua server co cấu hình mạnh...
Cách chống DDOS tốt nhất là phần cứng....

Còn code thì đã caching hết tất cả nhũng gì có thể cache được rồi.....
[Up] [Print Copy]
  [Programming]   Chống DOS bằng cho php script nhờ kết hợp với memcache. 18/06/2009 16:08:43 (+0700) | #3 | 183888
flier_vn
Member

[Minus]    0    [Plus]
Joined: 15/07/2008 01:13:39
Messages: 28
Offline
[Profile] [PM]

myquartz wrote:
Hi!
Thấy vài member thảo luận về code chống DOS. Tớ góp 1 tí cho vui.
Đây là đoạn code tớ đã áp dụng 1 cho 1 site của tớ, nó có khoảng 5000 keep-alive session, 10K IP khác nhau truy cập hàng ngày, site cung cấp thông tin trực tuyến nên mỗi client request khoảng 5-7 giây 1 lần, với 18-20 triệu hit/ngày (cường độ khá kinh khủng đấy).

code này áp dụng cho php. Phải kết hợp với memcache để đảm bảo tốc độ (1 ứng dụng khá là ... hay đấy). Nếu dùng mysql cũng đc, với memory table, nhưng ko hay lắm vì mysql nhiều overhead hơn nên chậm hơn.

Code:
$antiflood = 4; // anti-flooding protect time in seconds.

	[b][color=yellow]$MCobj = new Memcache;[/color][/b]
	if(!$MCobj->pconnect($MCHost, 11211))
		$MCHost = null;
	else if($debug) echo "<debug>Connected to cached</debug>";

//Anti flooding
$pattern = '/^(10\.|192\.168\.|127\.)/';
if($MCobj && !preg_match($pattern,$_SERVER['REMOTE_ADDR'])) {
        $protectedkey = 'ip'.$_SERVER['REMOTE_ADDR'].'-'.$_SERVER['SCRIPT_FILENAME'];
	$isquery = $MCobj->get($protectedkey);

	if($isquery) { // query too fast
		echo 'Server too busy, please visit later.;
		exit();
	}
	$MCobj->set($protectedkey, 1, 0, $antiflood);
}


Chúc các bạn thành công. 


Mình vẫn chưa thấy Class Memcache... ? Bạn giải thick rõ hơn về đoạn code trên được ko ? Vd như Memcache được gọi ra từ đâu ?
MerChant.Vn - Website học hỏi, trao đổi thảo luận về kinh doanh.

DànhChoBé.VN - Chuyên bán đồ chơi chất lượng, thương hiệu Fisher price, Disney, Thomas & Friends
[Up] [Print Copy]
  [Programming]   Chống DOS bằng cho php script nhờ kết hợp với memcache. 19/06/2009 07:13:55 (+0700) | #4 | 183970
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Cái Class Memcache là 1 extension của php (tên gói là php-pecl-memcache).
Ngoài ra còn cần memcached server (tên gói là memcached), cài vào vào start lên.
Kỹ thuật sử dụng memcache này áp dụng cho khá nhiều site có tải nặng, ở VN đấy, khi muốn lưu lại nội dung tạm thời để tăng tốc và giảm tải cho CSDL, hiệu quả tốt không ngờ đấy. Nhiều Web master giấu nghề nên ko nói ra thôi. Tớ thì dùng nó cho đoạn code chống DoS trên.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|