別のサイトの iframe の中身は Javascript からは見られない

iframe に関するセキュリティ上の制限

常識かもしれないが、とりあえずメモ。

次のような HTML を考えてみる。

<html>
<body>
<iframe src="http://www.softculture.com/" id="iframe1"></iframe>
</body>
</html>

これをファイルとして保存して、それを FireFox 2.0 で直接読み込む。(つまりローカルで実行)
Firebugs のコンソールで次の Javascript のコードを実行すると、

document.getElementById("iframe1").contentWindow.document.body

"Permission denied to get property HTMLDocument.body" と言われてエラーになる。

別のサイトを読み込む iframe の中身の HTML は、読み込み側の Javascript のコードからは触れないようになっているのだ。こうなってないと、例の hidden フィールドに隠したトークンによる CSRF 対策がまったく意味をなさなくなる。悪意のあるサイトが攻撃対象のサイトのウェブページを iframe でくくって読み込み、トークンを盗み出すことができてしまうからだ。

参考サイト

JavaScript インラインフレーム(iframe)関連
iframe.contentWindow.document.body が取れるのは、同一ドメインのサイトに対してだけ。(って正確な表現かどうか自信がない。すくなくとも、iframe の src が別のドメインの URL のときは無効)

開発者のための正しいCSRF対策
よくまとまってると思う。

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy