同一オリジンポリシーの必要性
同一オリジンポリシーの必要性
同一オリジンポリシーを設定することにより、JavaScriptなどのクライアントスクリプトからサイトのをまたがったアクセス(クロスドメイン)を禁止するセキュリティ上の制限である。
これはブラウザのサンドボックスに用意された制限。
同一オリジンである条件
- URLのFQDNが一致していること。 要は「a.hoge.com」と「b.hoge.com」があった時に、「hoge.com」が一致していればいいというわけではなくちゃんと「a.hoge.com」で一致していないといけない。
- プロトコルが一致していること。http⇔httpsではダメでhttp⇔httpもしくはhttps⇔httpsでないとダメ。
- ポート番号が一致していること。
同一オリジンポリシーが設定されていても受動的攻撃は防げない!?
アプリケーション側に脆弱性がある場合受動的攻撃を受ける場合がある。
その代表的な攻撃がXSSである。
クロスドメインのアクセス方法
同一オリジンポリシーのおかげで、クライアントスクリプトからサイトをまたいだアクセスができない。 ただし、例外はある。 以下にできるものとできないものを記載する。
frame要素とiframe要素 クロスドメイン自体のアクセスはできるが、Javascriptによってクロスドメインのドキュメントにアクセスすることが禁じられている。
img要素 img要素のsrc属性はクロスドメインの指定が可能である。 この場合、画像に対するリクエストには画像のあるホストに対するクッキーが使用されるので、罠サイトに「認証の必要な画像」を表示させることも可能。
HTML5のcanvas要素を強いるとJavascriptから画像の中身にアクセスできるが、この場合同一オリジンポリシーおよび、CORSの制約を受ける。なので通常クロスドメインの画像参照が問題になることはない。
- script要素 script要素にsrc属性を指定すると他のサイトからJavaScriptを読み込むことが出来る。