Safari で 2ちゃんねるが見れない原因
今年になってから Safari を使って 2ちゃんねるを閲覧できないと妻から不満を言われていたので調べてみた。具体的には、扉ページから掲示板コンテンツに移動後、左メニューのリンクをクリックしてもページの遷移が発生しないが、コンテクストメニューから “リンクを新規〜で開く” を選択すると問題がない。そこで Debug メニューの JavaScript コンソールを確認したところ、右フレーム内に配置されているページで、ドメインやポートが一致しないにも関わらず JavaScript を実行しようとしていることに問題があるという。
そのドメインが異なるページにはこのような HTML の一行があり、1インラインフレームを使ってフラッシュムービーによる広告を読み込んでいるようだ。そしてこのPHPファイルからリダイレクトされ読み込まれる、第三の異なるドメイン置かれた HTML では writeFlash という JavaScript の関数が実行されていた。
しかし、今までの概念であれば当たり前のようなファイル構成であるし他のブラウザでは問題がないことからこの挙動には疑問があったが、Apple の文書にその答えを見つけた。
セキュリティアップデート 2007-009 について
Safari
CVE-ID:CVE-2007-5858
対象となるバージョン:Mac OS X v10.4.11、Mac OS X Server v10.4.11、Mac OS X v10.5.1、Mac OS X Server v10.5.1
影響:悪意のある Web サイトにアクセスすると、機密情報が漏洩する可能性がある。説明:WebKit の機能によって、あるページからほかのページのサブフレームへのナビゲーションが可能になるため、悪意を持って作成された Web ページにアクセスすると、クロスサイトスクリプティング攻撃が引き起こされ、機密情報が漏洩する可能性があります。このアップデートでは、フレームのナビゲーションポリシーをより厳しくすることで、この問題を解決しています。
確かに、入力フォームから iframe や script タグを使い、異なるのドメインに置いてあるファイルを埋め込み実行されるクロスサイトスクリプティング攻撃の仕組みを考えると、たとえミドルウェアで特殊文字を HTML エンティティに変換し忘れた致命的なミスがあったとしてもブラウザで防ぐことができるというのは良い設計だと思う。
結果的にマックユーザーが 2ちゃんねるを閲覧するには “セキュリティアップデート 2007-009″ を適用している Safari(あるいは Webkit を使ったブラウザと広義になるかもしれないが未確認) 以外で、ということになる。他のブラウザがこの仕様に追随するかどうかは分からないが、ウェブ開発者は注意しておく必要があるだろう。無論、現状でサイト設計者に変更を求めるのはシェアや広告主との絡みがあるので面倒が多いと思われる。
以上のことを妻に伝えたところ、Firefox やマカエレをインストールしてまで見たいとは思わない、ということだった。LOL
- 実際使われているインラインフレームのコードを引用して紹介していたが、同様の理由で Safari の RSS ブラウジングに問題が発生したため該当箇所を削除した。

更新1: Janetouch(リンク自主規制)を使うようになって放置してしまっていたこの問題だが、2008-03-18 リリースのSafari 3.1に含まれるセキュリティアップデートで解決しているようだ。
Safari 3.1 のセキュリティコンテンツについて
Safari
CVE-ID:CVE-2008-1002
対象となるバージョン:Mac OS X v10.4.11、Mac OS X v10.5.2、Windows XP または Vista
影響:悪意を持って作成された Web ページにアクセスすると、特定のサイトに書かれているスクリプトが別のサイトへとまたがって実行される(クロスサイト・スクリプティングの)可能性がある。説明:javascript: URL の処理にはクロスサイト・スクリプティングの問題があります。攻撃者は、悪意を持って作成された Web ページにアクセスするようにユーザを誘導することで、別のサイトのコンテキストで JavaScript を実行する可能性があります。このアップデートでは、javascript: URL の追加検証を行うことで問題を解決しています。この問題の報告は、Google Information Security Team の Robert Swiecki 氏の功績によるものです。
挿絵のように 、2ちゃんねる側のエラー出力は変わっていないところを見るとブラウザが対応したのではないかと推測できる。
コメントは受け付けていません。
フリーランスのウェブとiOSアプリ開発者で一児の父親。JavaScript, ActionScript, AppleScript, PHP, SQL, ObjCの読書実行試験運用管理を生業とし、BIND, SMTP, APACHE を MacBSD, FreeBSD, Mac OS X で使い、エディタは Vi, mi, Kod と遷移して現在は Smultron、そして Coda と Xcode の IDE を重用しています。暇を見付けてはバックギャモンゲームをオンラインで楽しんでいます。