クリックジャッキング対策の備忘録です。

クリックジャッキングとは?
http://internet.watch.impress.co.jp/cda/news/2009/03/03/22653.html

クリックジャッキングデモサイト
http://blog.livedoor.jp/nrudt/archives/51517133.html

クリックジャッキング対策は、サーバで設定する方法とコンテンツ内で記述する方法の2種類あります。

ここでは、サーバで設定する手順を説明します。

使用OS
CentOS5.5 64bit
注)OSのインストール方法は、以下アドレスの通りにしています。
http://www.kurobuti.com/linuxserver/index.php?option=com_content&view=arti
cle&id=68&Itemid=74


httpdバージョン
2.2.3-45.el5.centos

条件
Apacheで、「headers_module」がロードされていること。

(1)適当なフレームページを作成

<html>
<head>
<title>タイトル</title>
</head>
<frameset cols="200,*,200">
<frame name="a" src="a.html">
<frame name="b" src="b.html">
<frame name="c" src="c.html">
</frameset>
<noframes>
フレームの表示が出来ません。
</noframes>
</html>
ここでは、こんな感じ


(2)フレームページを完全に表示させない “DENY” を設定
[root@example ~]# vi /etc/httpd/conf/httpd.conf
<IfModule mod_headers.c>
 Header set X-Frame-Options "DENY"
</IfModule>
[root@example ~]# /etc/rc.d/init.d/httpd graceful
上記設定を行った状態でページにアクセスるとこんな感じ


「DENY」を設定するとフレーム内に表示されなくなります。

これだと、ガチガチすぎて自分のHPでフレームを使っている場合で最新のブラウザ(IE8など)でアクセスすると表示されなくて困ってしまいます。

そこで、自分のページでは表示できて(Top-level-browsing-context)外部サイトのフレームなどから呼びだされた場合にのみ表示させたくない設定は以下のようにします。

(3)外部ページのフレームで表示させない “SAMEORIGIN” を設定
[root@example ~]# vi /etc/httpd/conf/httpd.conf
<IfModule mod_headers.c>
 Header set X-Frame-Options "SAMEORIGIN"
</IfModule>
[root@example ~]# /etc/rc.d/init.d/httpd graceful
自分のページは通常に表示されるはずです。

そこで、外部ページからこのHPの一部を呼び出してみましょう。

ここでの想定は、「www.example.com」のフレームページの一部を「www.example2.com」のフレームページの一部に表示させようと思います。

www.example2.comのフレームソース
<html>
<head>
<title>タイトル</title>
</head>
<frameset cols="200,*,200">
<frame name="a" src="a.html">
<frame name="b" src="http://www.example.com/b.html"> # ここで呼び出し
<frame name="c" src="c.html">
</frameset>
<noframes>
フレームの表示が出来ません。
</noframes>
</html>
上記設定を行った状態でwww.example2.comにアクセスしたらこんな感じ


これで、自サイトのフレームは表示できて外部ページからの呼び出しでの表示は拒否することができるようになりました。

クリックジャッキングには、賛否両論ありますので各自のご判断で設定してください。
# 黒ぶちは、します:D

参考文献
1. http://bit.ly/dZIUQb (JPCERTのPDF)
2. http://apis.jpn.ph/fswiki/wiki.cgi?page=OpenBSD%2Fhttpd
3. http://httpd.apache.org/docs/2.2/ja/mod/mod_headers.html
4. http://kuro.suppa.jp/intermediate/level21.htm (サンプルフレームをお借りしました)


4月 11, 2011 at 10:58 pm by 黒ぶちメガネ
Category: Apache, Linux, セキュリティ