この記事にはプロモーションが含まれています。

iframeタグの使い方|セキュリティ対策で必須のsandbox属性とは?

iframeタグの使い方|セキュリティ対策で必須のsandbox属性とは?

ケケンタ

今回はHTMLタグの1つであるiframeタグの基本的な使い方使用する際の注意点について解説していきます。

後半ではiframeを使用する上で非常に重要となるセキュリティに関する内容使用上の注意点も解説しているので、ぜひ最後までご覧ください。

この記事を読むと分かること
  • iframeタグの概要や過去に非推奨となった理由
  • iframeタグの使い方
  • iframeタグにおけるセキュリティリスクとその対策方法
  • sandbox属性について
  • iframeタグを使用する上での注意点

セキュリティ対策についてしっかり学ばれたい方にはこちらの書籍がおすすめです。
通称:徳丸本と呼ばれる「Webアプリ開発者必読」とまで言われている書籍です)

体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践
徳丸 浩/著 SBクリエイティブ/出版│Amazon




ケケンタ

ケケンタのITブログでは、WebアプリPHPLaravel)やWeb制作WordPressコーディング)について情報を発信しています。
学習中の方や実務をされている方など多くの方にアクセスいただいていますので、ぜひほかの記事も参考にしてみてください!


運動不足、気になっていませんか?

もしプログラミング学習やお仕事で運動不足が気になっているなら
連続屈伸運動がおすすめです!

ボタンにカーソルを合わせるだけ
カウントダウンが始まるタイマーをご用意してみました!

ケケンタ

無理のない範囲で、ぜひ隙間時間に屈伸運動を取り入れてみて下さい!

タイマースタート

3:00

※運動不足だと連続3分で取り組んでもかなり息が切れます
(僕は加えて気分もちょっと悪くなりました……)
絶対にご無理の無い範囲でお取り組みください!


目次

iframeタグとは?

iframeタグとは、現在のWebページに別のサイトの情報をそのまま掲載したい(埋め込みたい)ときに使用するHTMLタグです。

iframeタグの主な使用例
  • Googleマップ
  • Youtube動画
  • Twitterのタイムライン
ケケンタ

サイト上にYoutube動画がそのまま掲載されているのを見たことがある方もいるかと思いますが、あれもiframeタグを使用することで実装をしています!

また、iframeタグは使用する際に表示領域(幅と高さ)を指定します。

その中に、表示対象のコンテンツが埋め込まれる形で表示される、という仕組みになっています。

iframeはInline Frameの略称で「インラインフレーム」や「アイフレーム」と呼ばれています。

iframeタグの基本的な使い方

基本構文

iframeタグの基本的な書き方は以下の通りです。

iframeタグの基本的な書き方

<iframe src="埋め込みたいページのURL(パス)" width="横幅" height="高さ"></iframe>

いくつか属性が登場していますが、iframeタグで設定可能な属性には主に以下のようなものがあります。

iframeタグで設定可能な属性

属性名説明
srciframeタグで読み込むコンテンツをパスで指定する
※パスは絶対パスもしくは相対パスでの指定が可能
width, heightiframeを表示する領域の幅と高さをそれぞれ指定する。
※CSSでの指定も可能
title読み上げソフトなどを利用している人向けに、iframe内のコンテンツの説明を記述する
allowiframeで読み込むコンテンツを制御するための属性。読み込むコンテンツに対してどのような動作を許可するかを指定できる
sandboxiframeに埋め込んでいるコンテンツ内で実行されるプログラム処理に対する制御の指定ができる
※詳細は項目「セキュリティ対策」で説明しています
iframeタグで設定可能な属性
ケケンタ

この他にも指定できる属性はありますが、その中にはHTML5では禁止(非推奨)となっているものも存在します。

例えば、iframeの枠を表示するためのframeborder属性は現在非推奨となっており、枠を表示したい際はCSSのborderプロパティを使用することが推奨されています。

使用例

基本構文の紹介だけではイメージが湧きづらいかと思いますので、実際の使用例を以下に提示します。

今回は本ブログのトップページを「横幅:画面サイズ, 高さ:400px」としてiframeで表示しています。

See the Pen iframe sample by ケケンタ (@lgshifbg-the-looper) on CodePen.

パスは絶対パス(URL)で指定し、title属性でiframeのサンプルコードである旨を説明しています。

ケケンタ

ちなみにここでは使用していませんが、allow属性を使用すると、例えばYoutube動画を埋め込んだ際に自動再生を許可するかどうかなどを設定することが可能です。

【注意点】iframeタグが非対応のブラウザ対策

基本構文ではご紹介しませんでしたが、上記の使用例のHTMLコードをご覧いただくと、<iframe></iframe>の間に「これはiframeタグのサンプルです」という記述があります。

実は

iframeタグには、対応していないブラウザが存在します。

そのようなブラウザ上ではiframeタグによる表示が行われないため、<iframe></iframe>の間に説明文を記載することでサイト閲覧者に「iframeタグがここにある」ということを伝えています。

(imgタグのalt属性と同じ役割を果たしていると捉えていただいて問題ありません)

iframeタグのセキュリティについて

前述の通り、iframeタグを使用することで他のサイトのコンテンツやYoutube動画などを簡単に埋め込むことができます。

しかし実は、iframeタグは過去にセキュリティ上の理由によって非推奨タグに登録されたことがあります。

結局その後は、Youtubeの動画埋め込みやWeb広告表示など多くのサイトがiframeを利用し、利便性が高かったという理由から、HTML5で非推奨が解除されました。

が、しかし、iframeタグには依然としてセキュリティ上の問題があり、それを正しく理解した上で使用をしなければ閲覧者に被害が及んでしまう恐れもあります。

本章では以下のようなセキュリティに関する内容を解説していきます。

  • iframeタグにどのようなセキュリティリスクがあるのか
  • iframeタグのセキュリティ対策としてどのような方法があるのか
ケケンタ

セキュリティ対策はWeb制作・アプリ開発者ならば必須の対応事項です!
今回ご紹介しているiframeタグに関わるセキュリティ事情をきちんと把握し、正しい使用方法を身に付けましょう。

セキュリティリスク

iframeタグの最大の問題点埋め込んだコンテンツ内で実行されるプログラムが、埋め込んでいるWebサイト上でも同様に実行可能ということです。

例えば、埋め込んだURL先のサイトに悪意のあるプログラムが設置されていた場合、iframeを使用しているサイト上でもそれが実行されてしまい、サイト閲覧者に被害が及ぶ恐れがあるということです。

これによって、クロスサイトスクリプティング(XSS)クリックジャッキングなどのセキュリティリスクが高まります。

上記2つのセキュリティ攻撃については以下の記事が参考になりましたのでご紹介させていただきます。

クロスサイト・スクリプティング
参考:https://www.hitachi-solutions.co.jp/security/sp/words/xss.html

クリックジャッキング
参考:https://www.hitachi-solutions-create.co.jp/column/security/click-jacking.html

セキュリティ対策

iframeのセキュリティ対策として以下の2点が挙げられます。

iframeのセキュリティ対策

  • 信頼性が低いサイトのコンテンツは埋め込まない
  • sandbox属性を使用して埋め込みコンテンツが実行可能なプログラムに制限をかける

特に、後者のsandbox属性による対策が確実かつ有効なため以下より詳しく解説をしていきます。

sandbox属性

sandbox属性についてお話しする前に、そもそもsandbox(サンドボックス)が何かをご説明します。

sandbox(サンドボックス)とは?

サンドボックスとは「砂場」が由来となっている、「コンピュータ上で構築された安全な仮想環境」のことです。
このサンドボックス内で実行されたプログラムはその外側へは影響を及ぼすことが無く、外部と完全に隔離された環境となっています。

sandbox属性の役割

これを踏まえた上で、iframeにおけるsandbox属性の役割とは、

iframeで埋め込んだコンテンツ内のプログラムが何でもかんでも実行されてしまわないように制御すること

です。

sandbox属性を使用することで、例えば本来であれば実行されてしまうはずだったjavascriptプログラムを「実行禁止」とし、iframeを使用しているサイト側への被害を防ぐことが可能となります。

sandbox属性の使い方

sandbox属性の基本的な書き方は以下の通りです。

<iframe src="埋め込みたいページのURL(パス)" sandbox></iframe>

このようにiframeタグ内に「sandbox」と書くだけで、埋め込んだコンテンツによる様々な挙動を制御することができ、セキュリティ対策になります。

以下はiframeタグ内にsandboxと記述することで制御される挙動の一例です。

sandbox属性により制御される挙動(例)
  • フォームからのデータ送信
  • ポップアップ・ウィンドウの表示
  • javascriptプログラムの実行

使用可能な主要プロパティ

反対に、一部の挙動は許可したいという場合にはsandbox属性に対してプロパティを記述します。

例えば、「フォームの送信だけは許可したい」という場合は以下のように記述をします。

<iframe src="埋め込みたいページのURL(パス)" sandbox="allow-forms"></iframe>

ここではsandboxに「allow-forms」というプロパティを指定しています。

主要なプロパティとしては以下のようなものがあります。

sandbox属性の主要なプロパティ

属性名説明
allow-forms埋め込んでいるページ上におけるフォームからのデータ送信を許可(これを指定しなくてもフォーム自体は通常通り表示されるが、フォーム送信処理は実行されない)
allow-popupsポップアップ・ウィンドウの表示を許可
allow-same-origin埋め込み閲覧コンテキストに、通常のオリジンと同じポリシーを適用。 親ドキュメントで利用できる機能が利用可能になる
allow-scripts埋め込んでいるページによるスクリプトの実行を許可(ポップアップを除く)
allow-downloads-without-user-activationユーザーの操作なしでのダウンロードを許可
iframeのsandbox属性に指定可能な主要プロパティ
ケケンタ

記述するべきプロパティはiframeタグを使用する目的によって変わります。
セキュリティリスクを低減するためにも、プロパティの意味をしっかりと理解して適切なものを設定するようにしましょう。

iframeタグを使用するときの注意点

ここまで、iframeタグの使用方法とセキュリティ対策について解説をしてきました。

しかし、セキュリティ上の理由とは別にiframeタグを使用するにあたっては注意点があります。

iframeタグを使用する際の注意点
  • iframeに埋め込んだコンテンツはSEO評価の対象とはならない
  • iframeに埋め込む=埋め込んだコンテンツを丸々同じページ上に表示するのと同じため、多用するとページ表示が遅くなる
  • HTML5から廃止・非推奨となっている属性があるため、指定する際は仕様を確認する
ケケンタ

iframeタグは別のサイトのコンテンツをそっくりそのまま表示することができて大変便利です。
しかし、セキュリティ対策以外にこうした注意点も存在するため、正しい理解のもとで使用するようにしましょう。

【まとめ】iframeタグはセキュリティリスクを理解した上で使用する

以上、iframeタグの使い方とセキュリティ対策、そして使用上の注意点でした。

iframeタグはコンテンツを簡単に埋め込めるため便利である一方、セキュリティリスクがあることを理解した上で正しく使用することが大切です。

この記事が参考になったらなら何よりです。

ケケンタ

最後に、僕がセキュリティ対策を学ぶ際に利用した書籍をご紹介させていただきます。

こちらの書籍は通称徳丸本と呼ばれており、Webセキュリティの第一人者である徳丸浩さんが手がけられている書籍です。Webアプリを開発する方Webアプリケーションのセキュリティ対策を徹底的に学びたい方にとてもオススメできる一冊です。

Webアプリケーション開発において、ある意味セキュリティ対策は技術力以上に重要です。

こちらの書籍を読むことでWebアプリケーションにおいて必要なセキュリティ要件も明確となるため、Webアプリ開発に携わる方は必ず目を通しておきたい一冊です。

ケケンタ

ここまでお読みいただきありがとうございました!
またどこかの記事でお会い出れば何よりです。

iframeタグの使い方【セキュリティ対策解説あり】のアイキャッチ

この記事が気に入ったら
フォローしてね!

この記事が良いと思ったらシェアしてね!
目次