PHP, создание сайта

Как защитить Ваш сайт от DoS-атаки? DoS основана на чрезмерно большом количестве запросов к сайту, в следствии чего перегруженный сервер не может принимать новые запросы, т.е. отказывает в обслуживании новые пользовательские запросы - отсюда и название метода (Denial of Service, отказ в обслуживании)

Существеет много различных способов защиты, как технических, так и программных. Стоит отметить, что при целевой серъезной атаке группой подготовленных хакеров, Вас вероятно ничего не спасет - такие атаки проводят, часто успешно, даже на такие сайты, как Майкрософт и ей подобные. Ведь даже на пару минут обрушить сайт таких компаний - это достижение с далеко идущими последствиями.

Впрочем, защитится от "обчных" хакерских атак (которые, тем не менее, не стоит недооценивать) можно достоточно просто - ниже приведен PHP-скрипт, который подсчитывает количество и частоту обращений с одного IP-адреса и, если таковых слишком много (что есть признак начала атаки) - отклоняет запросы с этого адреса. Стоит отметить, что данный скрипт защищает Ваш сайт только программно, т.е. защищает веб-сервер от чрезмерной нагрузки исполнения, поскольку запросы от атакующей стороны всё-равно будут поступть машине и серверу, но по крайней мере, сервер намного снизит свою нагрузку, не генирируя зазря страницы, тратя на это память и ресурсы процессора.

Итак, скрипт:

<?php
define('ALERT_TIME',300);
define('ALERT_COUNT',150);
function check_dos($ip_text, $link)
{
	$ip=ip2long($ip_text);
	$res=mysql_query($link,'SELECT lasttime, count, status FROM ip_check WHERE ip="'.$ip.'"');
	if (mysql_num_rows($res)==0)
	{ // нет такого IP
		$count=1;
		mysql_query($link,'INSERT INTO ip_check (lasttime,count,ip,status) VALUES ('.time().',1,"'.$ip.'",0)');
	}
	else
	{
		$data=mysql_fetch_row($res);
		$status=$data[2];
		if ($status!=2 && ($data[0]<time()-ALERT_TIME || $data[1]<ALERT_COUNT)) $count=1;
		elseif ($status!=2)
		{
			$count=$data[1]+1; if ($count>=ALERT_COUNT) $status=1;
		}

		if ($status!=2)	mysql_query($link,"UPDATE ip_check SET count=$count, status=$status, lasttime=".time()." WHERE ip='$ip' ");
		if ($status)
		{
			header($_SERVER['HTTP_PROTOCOL'].' 503 Temporary Unavailable');
			trigger_error('Превышено число допустимых запросов!',E_USER_ERROR);
		}
	}
}
?>

Для скрипта, как Вы видите, необходима БД с соответствующей таблицей и полями, составить которую не составит труда - оставляем Вам, как домашнее задание.



у нас проститутки разных возрастных категорий - проститутки Петербурга, девочки города. . Скачать Мальчики-девочки (2008) DVDRip .