iframe からのアクセスを拒否する .htaccess の設定方法

更新日: 公開日:2016/01/19
iframe禁止

ヘッダー部分に自身のサイトの情報と広告が掲載され、下部に iframe にて当サイトが表示されている海外のサイトのページを見つけてしまいました。

直接的な被害はないものの、このような表示のされ方は僕としても本意ではありません。リンクを貼ってくれるならまだしも、iframe で表示して自前のコンテンツのような見せ方をしているのが腑に落ちないポイントでした。

このようなサイト偽装されるのは良い気分ではないので、以下の Mozilla developer network のサイトに書かれている内容を参考に、外部サイトから iframe によるアクセスを拒否するように設定することにしました。

.htaccess へ記述して iframe によるアクセスを拒否する

Mozilla のサイトによると、HTTP レスポンスヘッダに含まれる X-Frame-Options を利用することで、iframe によるアクセス拒否を行うことができます。目的によって次の3パターンの方法で記述します。

  • 全てのサイトからのフレーム内表示を拒否する
  • 自身のサイト以外からのフレーム内表示を拒否する
  • 特定のサイトからのアクセスに限りフレーム表示を許可する

タイトルには .htaccess へ記述と書きましたが、管理者権限があり httpd.conf を編集できるのであれば、そちらへ記載した方が若干ですが処理のパフォーマンスが高いです。

全てのサイトからのフレーム内表示を拒否する方法

Header always append X-Frame-Options DENY

完全に拒否する場合の記述方法です。自身のサイトから呼び出した場合でも表示出来ないようになっています。ありとあらゆる状況下において拒否する方法です。

自身のサイト以外からのフレーム内表示を拒否する方法

Header always append X-Frame-Options SAMEORIGIN

外部ドメインからの iframe 表示は拒否しても、自身のサイトからの呼出しにおいては表示を許容する設定になります。ご自身のサイト運営状況にもよりますが、基本的にはこちらの設定を行っておくと良いでしょう。

特定のサイトからのアクセスに限りフレーム表示を許可する

Header always append X-Frame-Options ALLOW-FROM [サイトURL]

URL 指定でフレーム内表示を許容するサイトが指定できる設定です。ただ、この記述方法、試しにこのサイトの URL (https://webllica.com) を指定してみたのですが、うまく動作しないどころかサイトを表示すると 500 エラーになってしまいました。

あれこれ試行錯誤してみたものの、動作確認まで至りませんでした。

.htaccess の記述先はドメイン直下

更新する対象ファイルは、ドメイン直下のルートフォルダにある .htaccess です。これでサイト全体に対するアクセス拒否が設定できます。

もしルート直下に .htaccess ファイルが無い場合は、自身で作成しなくてはいけません。作成方法は下記ページを参考にしてください。

セキュリティ対策として設定する

ひとまず現時点においては、別ドメインからの iframe 表示を許容する予定は無いので、2つ目の SAMEORIGIN での設定を仕掛けておくことにします。また Mozilla のサイトを見ると、これを設定することでクリックジャッキング攻撃を防止できるそうなので、セキュリティの面からも設定しておくのが望ましいです。

クリックジャッキングとは、見た目は正常なサイトに見せかけて、別のサイトのコンテンツをクリックさせる攻撃方法です。

iframe からのアクセスを拒否する方法の紹介でした。

\ この記事をシェアする /

このブログの運営者

NJ

Web系メインで従事していた元システムエンジニア。現在は個人事業主として独立。Webサイト運営における「困った問題」の解決方法をブログで発信。Web サイト運営、ポップデザインや動画制作など、パソコンでモノづくりをしている。