iframeによる読み込みを防止する方法2023-05-25福田こんにちは。普段使っているウェブサイトやメールなどの仕組みをもっと分かるようになりたい福田です。このたび、会社のセキュリティ対策の一環として、iframe要素からこのウェブサイトを読み込むことができないようにしました。私はこういった内容に詳しくないのですが、良い勉強の機会だと思って詳しい人に教えてもらいながらやってみました。このウェブサイトの公開にはApacheを使っているので、.htaccessファイルを使って設定を行いました。この記事では、私のようにこういった内容に興味はあるけれど詳しくない、という人向けに今回行った内容を紹介します。iframeを使ってみるクリックジャッキング攻撃をイメージするためにも、まずはiframeを使ってみましょう。次のようなhtmlファイルを作成します。src="https://www.clear-code.com"></iframe></body></html>body以外はスニペットです。適当にhtmlの体裁を整えればいいです。bodyにiframeを足しています。src="https://www.clear-code.com"とすることで、iframeにこのウェブサイトを読み込ませています。このファイルをブラウザーで開くと、動作を確認することができます。既定のアプリで開くコマンドが便利です。hoge.htmlブラウザーで開くと、この対応をする以前では、次のようにクリアコードのウェブサイトがiframeの中で読み込まれていました。クリックジャッキング攻撃とはこのようにiframeで読み込むことができる場合は、クリックジャッキング攻撃に悪用される可能性があります。クリックジャッキング今回のケースでは、悪意のある人が作った悪意のあるウェブページ上にiframeを使ってクリアコードのウェブサイトを埋め込んで悪用する、という可能性があります。クリアコードのウェブサイトではクリックジャッキングをされて困るような機能はないとは思いますが、念の為に対策をすることになったわけです。DENYを出力します。このウェブサイトの公開にはApacheを使っているので、方法は2つあります。パフォーマンスへの影響がAと比べて大きい今回は、私が管理者権限を持っていないので、Bの方法で行います。Apacheでは.htaccessファイルを使うことで、様々な設定を各ディレクトリー単位で反映させることができます。今回はウェブサイト全体に適用する必要があるので、トップレベルの.htaccessを編集します。トップレベルの.htaccessに次の行を追加しました。DENY実際の修正コミットはこちらです。https://gitlab.com/clear-code/website/-/commit/fa28a0677c4c47bae7e0f1425cf6b655eeb15141この修正がデプロイされた後、再度冒頭の方法でiframeから読み込もうとしてみました1。すると、次のように読み込むことができなくなったことを確認できました。まとめそういえば、ククログでもスライドを記事に埋め込むのにiframeを使うことがあります。念の為にこの対応をしておくのが良さそうです。今回私は、iframeの簡単な使い方や、Apacheの.htaccessがこういうケースで使えることを学ぶことができました。いう問題に気がついたら、さっと修正できるようになっていきたいです。クリアコードではこのように知見や成果を公開することを重視しています。クリアコードで働くことに興味を持たれた方は、クリアコードの採用情報をぜひご覧ください。jekyllを使ってローカル環境でウェブサイトをジェネレートできますが、それではApacheが動作しません。そのため、jekyllを使ってローカルで.htaccessの動作を確認することはできません。フリーソフトウェア開発での開発の仕方をベースに、成果や知識を公開し共有しながら業務に携われます。クリアコードのYouTubeチャンネルです。メンバーの登壇動画や、開発プロダクトに関する動画を公開しています。4.0とGFDLのデュアルライセンスで自由に利用できます。クリアコードはプログラミングが楽しいソフトウェア開発者を1名募集しています。クリアコードは「クリアコードをいい感じにする人」を1名募集しています。クリアコードはフリーソフトウェア開発で培った技術力を提供しています。Thunderbird)とRubyとGroonga(全文検索)に関連した開発を得意としています。株式会社クリアコード。