.htaccessで外部サイトからiframeを拒否する方法

クローラビリティ
拒否

世の中にはWebクローリング&Webスクレイピングするサービスもあります。弊社サイトもそういったサービスからのクローリングがあり、データベースに掲載されました。その情報が古かったりしていてちょっと困っています。しかし、最新の状態に保つにはマメにクロールしないといけません。正直どちらも嫌なのでクローラー対策は必須だと実感しています。

外部サイトからのiframeを許容するか否か

iframeを使うことで別のHTMLを呼び出し表示することができます。昔はiframeで共通メニューを構成する、なんてこともありましたが(JavaScriptによるメニューもそうですね)、iframeは独立したHTMLとして認識されるので呼び出し元のコンテンツとはなりません。

個人的にiframeを使うのはGooglemapです。最近はiframe版が楽なので使う頻度が高いです。というように決してダメな技術とは思いません。しかし、外部サイトから自社サイトを呼び出された場合はいかがでしょうか? 使い方は以下のようなものでしょうか。

  1. コンテンツの一部として使用
  2. 画面キャプチャーとして使用

特に掲載場所に信頼性が担保できないときは拒否したいものです。自社サイトへのトラフィックも増えるのも拒否したいポイントです。最低限の対応となりますが、.htaccessでiframeを拒否することができます。

Header always append X-Frame-Options SAMEORIGIN

.htaccessに上記記述を追加すると外部サイトからのiframeを拒否できます(Apacheの場合)。また、「SAMEORIGIN」の部分を書き換えることで、iframe全てを拒否したり、特定ドメインからのiframeのみを許可することもできます。

▼iframeを全て拒否
Header always append X-Frame-Options DENY

▼特定ドメインのみiframeを許可(※「xxx」にURLを記載)
Header always append X-Frame-Options ALLOW-FROM [xxx]

詳しくはこちらをごらんください。

▼X-Frame-Options レスポンスヘッダ
https://developer.mozilla.org/ja/docs/Web/HTTP/X-Frame-Options

クローラーによるWebスクレイピングから自社サービスを守るには

上記は意図しないiframeを拒否するためのものですが、意図しないクロールを防ぐことはできません。コンテンツの盗用を目的としていなくても、ECサイトであれば商品のカテゴリや名称、型番、価格、在庫数などを日別に集計されることもあり得ます。つまり販売状況や価格の変動状況が他社に把握されることになります。企業名や住所、電話番号、業種などの営業情報は公開情報なのでまだ良いかもしれませんが、その情報が蓄積することで有料のサービスを提供することもできます。海外には「aiHit」という企業情報データベースサービスもあります。

▼aiHitについて(「不正アクセスを防止するためにはクローラー情報の収集から」より)
https://www.web-ma.co.jp/column/crawlability/634.html

自社サイトへのクローラーのアクセスを把握することで、それらを許容する・しないを選ぶことができます。クローラーのアクセス数は意外と多く、場合によってはサーバー負荷も増えるのでご注意ください。

西部俊宏
執筆者:西部俊宏
株式会社Webの間代表取締役。上場企業でのSEOやWebサイト構築実績多数。ECサイトのカスタマイズ経験も多数あり。
会社概要はこちら

「ECサイトをより便利にしたい」「もっと集客したい」ECカスタマイズはお任せください