#author("2020-04-27T13:46:39+09:00","","") #author("2020-04-27T18:14:41+09:00","","") ** ieblock.inc.php [#n4c3c571] |RIGHT:100|LEFT:360|c |~サマリ|IEからのアクセスを遮断| |~リビジョン|1.0| |~リビジョン|1.01| |~対応バージョン|1.5.3| |~投稿者|[[M.Taniguchi]]| |~投稿日|&new{2020-04-27 (月) 04:16:41};| **概要 [#u0281439] Internet Explorerからのアクセスを遮断するプラグイン。 古い Internet Explorer(IE)からのアクセスを遮断するプラグイン。 PukiWiki 1.5.3/PHP 7.4/UTF-8 で動作確認済み。旧バージョンでもおそらく動くと思います。 **導入方法 [#qb7c608a] 次のコードをスキンファイル(skin/pukiwiki.skin.php等)の冒頭「<?php」の後(8行目あたり)に挿入してください。 次のコードをスキンファイル(skin/pukiwiki.skin.php等)の冒頭「<?php」よりも後(8行目あたり)に挿入してください。 if (exist_plugin_convert('ieblock')) do_plugin_convert('ieblock'); // IE block plugin ''設定'' -アクセスを弾いた際、「:BrowserNotSupported」というページがあればエラーメッセージとしてその内容を表示します。なければHTTPエラーステータスのみ返します。 -定数 PLUGIN_IEBLOCK_ALLOW_VERSION により、遮断するIEのバージョンを指定することができます。デフォルトは2です。 -アクセスを弾いた際、「:BrowserNotSupported」という名前のページがあればエラーメッセージとしてその内容を表示します。なければHTTPエラーステータスのみ返します。 -定数 PLUGIN_IEBLOCK_ALLOW_VERSION により、遮断するIEのバージョンを指定することができます。デフォルトは1です。 #br |PLUGIN_IEBLOCK_ALLOW_VERSION値|IE10以下|IE11|Edge|Edge Chromium版|h |CENTER:PLUGIN_IEBLOCK_ALLOW_VERSION値|CENTER:IE10以下|CENTER:IE11|CENTER:Edge|CENTER:Edge Chromium版|h |CENTER:0|CENTER:許可|CENTER:許可|CENTER:許可|CENTER:許可| |CENTER:1|CENTER:遮断|CENTER:許可|CENTER:許可|CENTER:許可| |CENTER:''1''|CENTER:遮断|CENTER:許可|CENTER:許可|CENTER:許可| |CENTER:2|CENTER:遮断|CENTER:遮断|CENTER:許可|CENTER:許可| |CENTER:3|CENTER:遮断|CENTER:遮断|CENTER:遮断|CENTER:許可| |CENTER:4|CENTER:遮断|CENTER:遮断|CENTER:遮断|CENTER:遮断| **コード [#f468857c] ieblock.inc.php~ (下記のコードをコピーして、plugin ディレクトリに ieblock.inc.php というファイル名で保存してください) <?php /* PukiWiki - Yet another WikiWikiWeb clone. ieblock.inc.php, v1.0 2020 M.Taniguchi ieblock.inc.php, v1.01 2020 M.Taniguchi License: GPL v3 or (at your option) any later version Internet Explorerからのアクセスを遮断するプラグイン。 古いInternet Explorerからのアクセスを遮断するプラグイン。 【導入方法】 次のコードをスキンファイル(skin/pukiwiki.skin.php等)の冒頭「<?php」の後(8行目あたり)に挿入してください。 次のコードをスキンファイル(skin/pukiwiki.skin.php等)の冒頭「<?php」よりも後(8行目あたり)に挿入してください。 if (exist_plugin_convert('ieblock')) do_plugin_convert('ieblock'); // IE block plugin 【設定】 定数 PLUGIN_IEBLOCK_ALLOW_VERSION により、禁止するIEのバージョンを指定することができます。デフォルトではIE11以下を遮断し、Edge以上を許可します。 アクセスを弾いた際、「:BrowserNotSupported」というページがあればエラーメッセージとしてその内容を表示します。なければHTTPエラーステータスのみ返します。 定数 PLUGIN_IEBLOCK_ALLOW_VERSION により、禁止するIEのバージョンを指定することができます。 アクセスを弾いた際、「:BrowserNotSupported」という名前のページがあればエラーメッセージとしてその内容を表示します。なければHTTPエラーステータスのみ返します。 【ご注意】 本プラグインをセキュリティー目的で使用しないでください。 ブラウザーが自称するアプリ情報(UserAgent)を信じ、ごく簡単な判定をしているにすぎません。 また、本プラグインを挿入したスキンを介さないアクセスには効果がありません。 */ define('PLUGIN_IEBLOCK_ALLOW_VERSION', 2); // 0:IE10以下も許可(何もしない), 1:IE11以上のみ許可, 2:Edge以上のみ許可, 3:Edge Chromium版以上のみ許可, 4:Edge Chromium版以下すべて遮断 define('PLUGIN_IEBLOCK_ALLOW_VERSION', 1); // 0:IE10以下も許可(何もしない), 1:IE11以上のみ許可, 2:Edge以上のみ許可, 3:Edge Chromium版以上のみ許可, 4:Edge Chromium版以下すべて遮断 define('PLUGIN_IEBLOCK_ERRORPAGE', ':BrowserNotSupported'); // 遮断した際に表示するページ名。スキンなしで素のHTMLが表示されるので注意。IEをサポートしない旨とモダンブラウザーDLサイトへのリンク程度のシンプルな内容が望ましい function plugin_ieblock_convert() { if (PLUGIN_IEBLOCK_ALLOW_VERSION <= 0) return ''; // 二重起動禁止 static $included = false; if ($included) return ''; $included = true; $ua = strtolower($_SERVER['HTTP_USER_AGENT']); if (strstr($ua, 'edg/')) { if (PLUGIN_IEBLOCK_ALLOW_VERSION <= 3) return ''; } else if (strstr($ua, 'edge/')) { if (PLUGIN_IEBLOCK_ALLOW_VERSION <= 2) return ''; } else if (strstr($ua, 'trident/7.')) { if(PLUGIN_IEBLOCK_ALLOW_VERSION <= 1) return ''; } else if (!strstr($ua, 'trident/') && !strstr($ua, 'msie')) { return ''; } $page = PLUGIN_IEBLOCK_ERRORPAGE; if ($page && is_page($page)) { $vars['page'] = $page; $page = convert_html(get_source($page)); } else { http_response_code(406); $page = '<div style="position:relative;top:45vh;text-align:center;font-weight:bold">Your Browser is not supported.</div>'; } global $page_title; echo <<<EOT <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="robots" content="noindex,nofollow,noarchive" /> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,viewport-fit=cover" /> <title>Browser not supported - ${page_title}</title> </head> <body> ${page} </body> </html> EOT; die; } **用途 [#qdfc68f0] 本プラグインをセキュリティー目的で使用しないでください。~ ブラウザーが自称するアプリ情報(UserAgent)を信じ、ごく簡単な判定をしているにすぎません。~ また、本プラグインを挿入したスキンを介さないアクセスには効果がありません。 最新のHTML5・CSS3・JavaScript仕様を取り入れたスキンやプラグインを導入または開発しており、レガシーブラウザーに対応しかねる状況への対策として本プラグインを作成しました。~ 半端なものを見せるより、いっそ遮断してモダンブラウザーへのアップデートを促すほうが適切な場合もあるかと思います。 レガシーブラウザーにもいろいろありますが、とりあえずIEを対象とするのが一般的・現実的でしょう。~ 特にIE10以下は公式サポートが終了しており、表示・機能のみならずセキュリティー面にも不安があります。~ フィーチャーフォンやマイナーブラウザーは対象にするときりがなく、ユーザーに自覚もあると考えられるため除外しました。~ ホワイトリスト方式は、UserAgentの弊害として問題にもなっており採用できません。~ 結果としてIEのみをブラックとみなすような形になりましたが、他意はありません。 **ライセンス [#x5e224a8] GPL v3