您所在的位置: 首页 > 健宇学院 > 网站技术 > 防御CC攻击PHP代码

防御CC攻击PHP代码

两个月之前,由于我的健宇工作室网站,也受到过,CC的网站攻击,经过这次的经历之后,我也学会了采用CC攻击的黑客技术进行网站攻击,果然不错,嘻嘻!!!之前的文章里,我并没有发过我当时是如何采取防范措施的,虽然不是完全防范,但是也能起到一定的作用。

攻击者借助代理服务器生成指向受害主机的合法请求,实现DOS,和伪装就叫:cc(ChallengeCollapsar)。这种攻击模式已经算是老技术了,甚至不能称之为一门技术。 但是在现在,还是有许许多多的主机抵抗不了CC的骚扰。

可以说CC攻击的适用性和破坏性不比DDOS的差,经过了这几天的实验,发现了许多政府相关部门的网站都支持不住CC的攻击,更别说我们许许多多的Wordpress用户了。 WordPress以功能强大,扩展性强称霸博客界,但是殊不知在功能强大的背后更显脆弱,原来看过一篇文章,其中提到Wordpress的强大足以作为一个CMS大型网站,但是现在看来要用Wordpress做大型网站还得做些防范措施了。

一个反应时间到进入时间在1秒内的网站一旦被CC攻击可以在几秒内反应加至20秒以上,甚至拒绝服务。是不是听起来很骇人? 下面说说PHP大型网站如何判断是否为CC攻击(代理访问), 其原理就是拒绝代理访问。 这样会拦截一小部分的访客,但是为了那一大部分的访客,这何足挂齿呢?

代码如下:

<?
//Ban Proxy for all soft.
$ipinfo = new IpInfo();
$ipinfo->banProxy(true);
//false 时,屏蔽超级匿名的代理
class IpInfo
{
// (c) KINPOO
var $clientIp;
var $proxy;
var $proxyIp;

function IpInfo()
{
$this->getIp();
$this->checkProxy();
}
function banProxy($banAll = true)
{
if (!$this->proxy)
{
return;
}
if ($banAll == true)
{
die(‘Forbidden:Proxy Connection’);
}
else
{
if ($this->clientIp == $this->proxyIp)
{
die(‘Forbidden:High Anonymous Proxy Connection’);
}
}
}
function checkProxy()
{
if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR’])
|| isset($_SERVER[‘HTTP_VIA’])
|| isset($_SERVER[‘HTTP_PROXY_CONNECTION’])
|| isset($_SERVER[‘HTTP_USER_AGENT_VIA’])
|| isset($_SERVER[‘HTTP_CACHE_CONTROL’])
|| isset($_SERVER[‘HTTP_CACHE_INFO’]))
{
$this->proxy = true;
$this->proxyIp = preg_replace(“/^([{0-9}\.]+).*/”, “[url=file://\\1]\\1[/url]“, $_SERVER[‘REMOTE_ADDR’]);
return $this->proxy;
}
}

function getIp()
{
if (isset($_SERVER[‘HTTP_CLIENT_IP’]) && $_SERVER[‘HTTP_CLIENT_IP’])
{
$ip = $_SERVER[‘HTTP_CLIENT_IP’];
}
elseif (isset($_SERVER[‘HTTP_X_FORWARDED_FOR’]) && $_SERVER[‘HTTP_X_FORWARDED_FOR’])
{
$ip = $_SERVER[‘HTTP_X_FORWARDED_FOR’];
}
else
{
$ip = $_SERVER[‘REMOTE_ADDR’];
}
$this->clientIp = preg_replace(“/^([{0-9}\.]+).*/”, “[url=file://\\1]\\1[/url]“, $ip);
return $this->clientIp;
}
}
?>

你可以将这段判断代码加到每一个用户会访问到的地方,一旦判断出是代理服务器访问网站会输出“Proxies Forbidden”,如果开启了高级匿名代理服务器则会显示“Forbidden:High Anonymous Proxy Connection”, 当然你也可以通过加入过侧边栏,或者页脚来达到一举多得的防范目的。
而我是放在我的footer.php主题文件里的!

当然还可以通过下面这段代码实现揪出IP源来进行.htaccess的封锁。

function getIP()
{
static $realip;
if (isset($_SERVER)){
if (isset($_SERVER[“HTTP_X_FORWARDED_FOR”])){
$realip = $_SERVER[“HTTP_X_FORWARDED_FOR”];
} else if (isset($_SERVER[“HTTP_CLIENT_IP”])) {
$realip = $_SERVER[“HTTP_CLIENT_IP”];
} else {
$realip = $_SERVER[“REMOTE_ADDR”];
}
} else {
if (getenv(“HTTP_X_FORWARDED_FOR”)){
$realip = getenv(“HTTP_X_FORWARDED_FOR”);
} else if (getenv(“HTTP_CLIENT_IP”)) {
$realip = getenv(“HTTP_CLIENT_IP”);
} else {
$realip = getenv(“REMOTE_ADDR”);
}
}
return $realip;
}

 

当然这里的代码主要是防范CC攻击, 如果想做到非常安全,那么不止应该有强健的代码保护,同样需要有强大的主机支持了。

在此提醒一下,真要被CC攻击了,如果是虚拟主机的话,可以说,根本无法阻止,唯一能解决的是,暂时做一个静态页面作为网站的访问页。

请尊重我们的辛苦付出,未经允许,请不要转载 健宇工作室 的文章,鄙视各种无耻的采集行为!

健宇工作室分享区  YY教学频道号:63565426

相关日志:

防御CC攻击PHP代码:等您坐沙发呢!

给我留言

15 + 59 = 两数相加后,请输入答案