IframeタグをMediaWikiで使う
MediaWikiですが、デフォルトではIframeタグは使用が禁止されていてユーザーがiframeタグを入力しても除去される仕様でした。これはIframeで埋め込んだコンテンツが著作権の侵害をする可能性があることと、外部サイトを埋め込むことによるセキュリティ上のリスクによるものでした。このIframeを許可されたドメインのみ埋め込む可能する方法がありましたので備忘録として残しておきます。
インストール
- MediaWikiサイトからGitプロジェクトページへ移動してZipファイルをダウンロードして、ファイルをextensions/フォルダー内のIframeという名前のディレクトリ内に配置します。
- 以下のコードを LocalSettings.php ファイルの末尾に追加します:
wfLoadExtension( 'Iframe' );
設定
Iframeタグを使用するためのオプションのパラメータがいくつかあります。 LocalSettings.phpで設定することができます。
初期化
設定により、サイトマップのファイル名を設定することができます。
$wgIframe = array();
許可ドメインの設定
デフォルトでは、全てのドメインが拒否されています。そのためLocalSettings.phpで一つづつ許可するドメインを記述して指定する必要があります。
$wgIframe['server']['local'] = [ 'scheme' => 'https', 'domain' => 'your-domein.com' ];
これは、localドメインに対してIframeを許可する記述です。
$wgIframe['server']['steam'] = [ 'scheme' => 'https', 'domain' => 'steampowered.com' ];
これは、steamというキーに対して、steampowered.com
というドメインを許可するという記述です。
Iframeタグの記述例
<iframe key="steam" level="store" path="widget/XXXXXX/" frameborder="0" width="640" height="190"></iframe>
通常のIframeタグの記述ルールとは変わっていることに注目してください。
key:LocalSettings.phpに記述したkey="steam"
を明記します。
level:これは表示したいWEBページにサブドメインがあるときに記述します。デフォルトは空です。
level="store"
は、LocalSettings.phpで設定したsteampowered.com
のサブドメインを指定しています。
path:これはURLのドメインより後ろの部分
https://store.steampowered.com/widget/XXXXXX/
URLのwidget/XXXXXX/
を指定します。これは、おそらくですが少しでもセキュリティリスクを減らすために絶対パス(完全なURLの)ではなく相対パス(ドメインを除去したURL)で記述する措置にしたのだと考えています。
注意することは、
<iframe src="https://your-domein/widget/XXXXXX/" frameborder="0" width="640" height="190"></iframe>
という外部サイトのIframeコードを入手したとしたら、src="https://your-domein/widget/XXXXXX/"
は除去してかつ、ドメインより後ろの相対パスはpathに記述する必要があるということです。