---
title: "PHPコードブラウザチェックによるCC攻撃対策 - 憂いを忘れる一枚"
description: 数日前、この小さなブログはグループ内のある大物に目を付けられ、攻撃を受け続けていました。CDNを有効にしていたため、相手は私のオリジンサーバーのIPを取得できず、代わりに私のサイトに大規模なCC攻撃を仕掛けてきました。私は完全に不意を突かれてしまいました。
canonical_url: "https://www.ikxin.com/ja/article/php-cc-attack-defense"
last_updated: "2026-09-16T09:59:27.259Z"
locale: ja
meta:
  "og:description": 数日前、この小さなブログはグループ内のある大物に目を付けられ、攻撃を受け続けていました。CDNを有効にしていたため、相手は私のオリジンサーバーのIPを取得できず、代わりに私のサイトに大規模なCC攻撃を仕掛けてきました。私は完全に不意を突かれてしまいました。
  "og:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~UEhQ44Kz44O844OJ44OW44Op44Km44K244OB44Kn44OD44Kv44Gr44KI44KLQ0PmlLvmkoPlr77nrZYgLSDmhoLjgYTjgpLlv5jjgozjgovkuIDmnpo%2Cc_Article%2Ctitle_~UEhQ44Kz44O844OJ44OW44Op44Km44K244OB44Kn44OD44Kv44Gr44KI44KLQ0PmlLvmkoPlr77nrZY%2Cdescription_~5pWw5pel5YmN44CB44GT44Gu5bCP44GV44Gq44OW44Ot44Kw44Gv44Kw44Or44O844OX5YaF44Gu44GC44KL5aSn54mp44Gr55uu44KS5LuY44GR44KJ44KM44CB5pS75pKD44KS5Y-X44GR57aa44GR44Gm44GE44G-44GX44Gf44CCQ0RO44KS5pyJ5Yq544Gr44GX44Gm44GE44Gf44Gf44KB44CB55u45omL44Gv56eB44Gu44Kq44Oq44K444Oz44K144O844OQ44O844GuSVDjgpLlj5blvpfjgafjgY3jgZrjgIHku6Pjgo~jgorjgavnp4Hjga7jgrXjgqTjg4jjgavlpKfopo~mqKHjgapDQ-aUu-aSg-OCkuS7leaOm-OBkeOBpuOBjeOBvuOBl-OBn-OAguengeOBr-WujOWFqOOBq-S4jeaEj-OCkueqgeOBi-OCjOOBpuOBl-OBvuOBhOOBvuOBl-OBn-OAgg%2CsiteName_~5oaC44GE44KS5b-Y44KM44KL5LiA5p6a%2CsiteHost_www.ikxin.com%2Cp_Ii9qYS9hcnRpY2xlL3BocC1jYy1hdHRhY2stZGVmZW5zZSI%2Cs_CQAKmqbDE0yRLRUL.png"
  "og:image:alt": "PHPコードブラウザチェックによるCC攻撃対策 - 憂いを忘れる一枚"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": PHPコードブラウザチェックによるCC攻撃対策
  "twitter:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~UEhQ44Kz44O844OJ44OW44Op44Km44K244OB44Kn44OD44Kv44Gr44KI44KLQ0PmlLvmkoPlr77nrZYgLSDmhoLjgYTjgpLlv5jjgozjgovkuIDmnpo%2Cc_Article%2Ctitle_~UEhQ44Kz44O844OJ44OW44Op44Km44K244OB44Kn44OD44Kv44Gr44KI44KLQ0PmlLvmkoPlr77nrZY%2Cdescription_~5pWw5pel5YmN44CB44GT44Gu5bCP44GV44Gq44OW44Ot44Kw44Gv44Kw44Or44O844OX5YaF44Gu44GC44KL5aSn54mp44Gr55uu44KS5LuY44GR44KJ44KM44CB5pS75pKD44KS5Y-X44GR57aa44GR44Gm44GE44G-44GX44Gf44CCQ0RO44KS5pyJ5Yq544Gr44GX44Gm44GE44Gf44Gf44KB44CB55u45omL44Gv56eB44Gu44Kq44Oq44K444Oz44K144O844OQ44O844GuSVDjgpLlj5blvpfjgafjgY3jgZrjgIHku6Pjgo~jgorjgavnp4Hjga7jgrXjgqTjg4jjgavlpKfopo~mqKHjgapDQ-aUu-aSg-OCkuS7leaOm-OBkeOBpuOBjeOBvuOBl-OBn-OAguengeOBr-WujOWFqOOBq-S4jeaEj-OCkueqgeOBi-OCjOOBpuOBl-OBvuOBhOOBvuOBl-OBn-OAgg%2CsiteName_~5oaC44GE44KS5b-Y44KM44KL5LiA5p6a%2CsiteHost_www.ikxin.com%2Cp_Ii9qYS9hcnRpY2xlL3BocC1jYy1hdHRhY2stZGVmZW5zZSI%2Cs_CQAKmqbDE0yRLRUL.png"
  "twitter:image:alt": "PHPコードブラウザチェックによるCC攻撃対策 - 憂いを忘れる一枚"
---

> Index of every page on this site: [llms.txt](https://www.ikxin.com/llms.txt)

# **PHPコードブラウザチェックによるCC攻撃対策**

2017.07.17 5,001  0

数日前、この小さなブログはグループ内のある大物に目を付けられ、攻撃を受け続けていました。CDNを有効にしていたため、相手は私のオリジンサーバーのIPを取得できず、代わりに私のサイトに大規模なCC攻撃を仕掛けてきました。私は完全に不意を突かれてしまいました。

攻撃元のIPがあまりにも多かったため、手動でブラックリストに追加するのはほぼ不可能でした。ちょうど百度雲加速のスマートCC防御機能を思い出しました。これは5秒シールドの原理に基づいています。そこで、PHPを使って百度雲加速のCC防御メカニズムを再現し、簡単な防御スクリプトを書きました。今日は皆さんに共有します。

## PHP CC防御コード

 PHP

```
<?php
define('SYSTEM_ROOT', dirname(preg_replace('@\\(.*\\(.*$@', '', preg_replace('@\\(.*\\(.*$@', '', __FILE__))) . '/');
session_start();
date_default_timezone_set('Asia/Shanghai');
header('Content-Type: text/html; charset=UTF-8');

function getspider($useragent = '') {
    if (defined('CC_Defender') && CC_Defender == 2) return false;
    if (!$useragent) {
        $useragent = $_SERVER['HTTP_USER_AGENT'];
    }
    $useragent = strtolower($useragent);
    $spiders = [
        'baiduspider', 'googlebot', 'soso', 'bing', 'yahoo', 'sohu-search',
        'sogou', 'youdaobot', 'yodaobot', 'robozilla', 'msnbot', 'lycos',
        'ia_archiver', 'archive.org_bot', 'sitebot', 'mj12bot', 'gosospider',
        'gigabot', 'yrspider', 'jikespider', 'addsugarspiderbot', 'testspider',
        'etaospider', 'wangidspider', 'foxspider', 'docomo', 'yandexbot',
        'ezooms', 'sinaweibobot', 'catchbot', 'surveybot', 'dotbot', 'purebot',
        'ccbot', 'mlbot', 'adsbot-google', 'ahrefsbot', 'spbot', 'augustbot'
    ];
    foreach ($spiders as $spider) {
        if (strpos($useragent, $spider) !== false) return $spider;
    }
    return false;
}

if ($_GET['rand'] && $_SESSION['rand_session'] != $_GET['rand']) {
    header('Content-Type: text/html; charset=UTF-8');
    exit('<b>ブラウザが COOKIE に対応していないか、アクセスに異常があります！</b>');
}

if (!$_SESSION['rand_session']) {
    if (!getspider()) {
        $rand_session = md5(uniqid() . rand(1, 1000));
        $_SESSION['rand_session'] = $rand_session;
        exit("<!DOCTYPE HTML>
<html>
<head>
<meta charset=\"UTF-8\"/>
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\" />
<title>安全チェック中...</title>
<script>
    var i = 5; 
    var intervalid; 
    intervalid = setInterval(\"fun()\", 1000); 
    function fun() { 
        if (i == 0) { 
            window.location.href = \"?{$_SERVER['QUERY_STRING']}&rand={$rand_session}\"; 
            clearInterval(intervalid); 
        } 
        document.getElementById(\"mes\").innerHTML = i; 
        i--; 
    } 
</script> 
<style>
html, body {width: 100%; height: 100%; margin: 0; padding: 0;}
body {background-color: #ffffff; font-family: Helvetica, Arial, sans-serif; font-size: 100%;}
h1 {font-size: 1.5em; color: #404040; text-align: center;}
p {font-size: 1em; color: #404040; text-align: center; margin: 10px 0 0 0;}
#spinner {margin: 0 auto 30px auto; display: block;}
.attribution {margin-top: 20px;}
</style>
</head>
<body>
<table width=\"100%\" height=\"100%\" cellpadding=\"20\">
<tr>
<td align=\"center\" valign=\"middle\">
<noscript><h2>ブラウザの JavaScript 機能を有効にして、ページを再読み込みしてください</h2></noscript>
<h1><span>ブラウザの安全性をチェック中...</span></h1>
<p>この処理は自動的に完了します</p>
<p>しばらくお待ちください。残り <span id=\"mes\">5</span> 秒</p>
</td></tr></table>
</body></html>");
    }
}
?>
```

上記のPHPコードを、サイトの先頭部分にあるPHPファイル（`index.php` またはその他のメインエントリーファイルなど）に追加すると、防御を有効にできます。これにより、安全確認を通過してCOOKIEを取得したブラウザだけが、正常にサイトへアクセスできるようになります。

## 注意事項

1. この方法は、比較的小規模な攻撃（通常のCC攻撃など）にのみ適しています。
2. 大量の分散ボットネットによる攻撃（DDoSなど）を受けた場合、このコードでは対応できない可能性があります。専門的なDDoS対策サービスの利用をおすすめします。
3. 攻撃を受けた際は、目立たないようにし、冷静に対処してください。挑発は避けましょう。

## **コメント**

(0)

まだコメントはありません

## **コメントを投稿**

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.ikxin.com/ja#website","@type":"WebSite","description":"「憂いを忘れる一枚」は、技術探究と日々の暮らしをテーマにした個人サイトです。Web 開発、バックエンド、DevOps の実践を記録し、ソフトウェアツールやデジタル体験、コードの外で得た見聞と思索を共有します。","inLanguage":"ja-JP","name":"憂いを忘れる一枚","url":"https://www.ikxin.com/ja","translationOfWork":{"@id":"https://www.ikxin.com/#website"}},{"@id":"https://www.ikxin.com/ja/article/php-cc-attack-defense#webpage","@type":"WebPage","description":"数日前、この小さなブログはグループ内のある大物に目を付けられ、攻撃を受け続けていました。CDNを有効にしていたため、相手は私のオリジンサーバーのIPを取得できず、代わりに私のサイトに大規模なCC攻撃を仕掛けてきました。私は完全に不意を突かれてしまいました。","name":"PHPコードブラウザチェックによるCC攻撃対策","url":"https://www.ikxin.com/ja/article/php-cc-attack-defense","isPartOf":{"@id":"https://www.ikxin.com/ja#website"},"potentialAction":[{"@type":"ReadAction","target":["https://www.ikxin.com/ja/article/php-cc-attack-defense"]}]}]}
```

## Sitemap

See the full [sitemap](https://www.ikxin.com/sitemap.md) for all pages.
