ieblock.inc.php

サマリIEからのアクセスを遮断
リビジョン1.01
対応バージョン1.5.3
投稿者M.Taniguchi
投稿日2020-04-27 (月) 04:16:41

概要

古い Internet Explorer(IE)からのアクセスを遮断するプラグイン。

PukiWiki 1.5.3/PHP 7.4/UTF-8 で動作確認済み。旧バージョンでもおそらく動くと思います。

導入方法

次のコードをスキンファイル(skin/pukiwiki.skin.php等)の冒頭「<?php」よりも後(8行目あたり)に挿入してください。

if (exist_plugin_convert('ieblock')) do_plugin_convert('ieblock');	// IE block plugin

設定

 
PLUGIN_IEBLOCK_ALLOW_VERSION値IE10以下IE11EdgeEdge Chromium版
0許可許可許可許可
1遮断許可許可許可
2遮断遮断許可許可
3遮断遮断遮断許可
4遮断遮断遮断遮断

コード

ieblock.inc.php
(下記のコードをコピーして、plugin ディレクトリに ieblock.inc.php というファイル名で保存してください)

<?php
/*
PukiWiki - Yet another WikiWikiWeb clone.
ieblock.inc.php, v1.01 2020 M.Taniguchi
License: GPL v3 or (at your option) any later version

古いInternet Explorerからのアクセスを遮断するプラグイン。

【導入方法】
次のコードをスキンファイル(skin/pukiwiki.skin.php等)の冒頭「<?php」よりも後(8行目あたり)に挿入してください。

 if (exist_plugin_convert('ieblock')) do_plugin_convert('ieblock');	// IE block plugin

 【設定】
定数 PLUGIN_IEBLOCK_ALLOW_VERSION により、禁止するIEのバージョンを指定することができます。
アクセスを弾いた際、「:BrowserNotSupported」という名前のページがあればエラーメッセージとしてその内容を表示します。なければHTTPエラーステータスのみ返します。

【ご注意】
本プラグインをセキュリティー目的で使用しないでください。
ブラウザーが自称するアプリ情報(UserAgent)を信じ、ごく簡単な判定をしているにすぎません。
また、本プラグインを挿入したスキンを介さないアクセスには効果がありません。
*/

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;
}

用途

本プラグインをセキュリティー目的で使用しないでください。
ブラウザーが自称するアプリ情報(UserAgent)を信じ、ごく簡単な判定をしているにすぎません。
また、本プラグインを挿入したスキンを介さないアクセスには効果がありません。

最新のHTML5・CSS3・JavaScript仕様を取り入れたスキンやプラグインを導入または開発しており、レガシーブラウザーに対応しかねる状況への対策として本プラグインを作成しました。
半端なものを見せるより、いっそ遮断してモダンブラウザーへのアップデートを促すほうが適切な場合もあるかと思います。

レガシーブラウザーにもいろいろありますが、とりあえずIEを対象とするのが一般的・現実的でしょう。
特にIE10以下は公式サポートが終了しており、表示・機能のみならずセキュリティー面にも不安があります。
フィーチャーフォンやマイナーブラウザーは対象にするときりがなく、ユーザーに自覚もあると考えられるため除外しました。
ホワイトリスト方式は、UserAgentの弊害として問題にもなっており採用できません。
結果としてIEのみをブラックとみなすような形になりましたが、他意はありません。

ライセンス

GPL v3


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-04-27 (月) 18:14:41
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u11. HTML convert time: 0.203 sec.

OSDN