W3C は 1997 年に「HTML フレームの実装」でフレームを実装する方法を説明しました。
祖先のいずれかによって使用される URL を SRC として割り当てようとするフレームは、SRC URL がまったくないかのように扱われます (基本的に空白のフレーム)。
iframe 再帰バグ/攻撃履歴
kingdago が発見し、上記のコメントで述べたように、これに対するセーフガードを実装できなかったブラウザの 1 つが1999 年のMozillaでした。開発者の一人からの引用:
MSIE5 ではこの種のページに問題がないため、これはパリティ バグです (また、困惑の原因となる可能性があります)。
私はこれをさらに掘り下げてみることにしましたが、2004 年にこれが再び起こったことが判明しました。ただし、今回はJavaScriptが関与していました。
これが原因のコードです: <iframe name="productcatalog" id="productcatalog" src="page2.htm"></iframe> の直後に、これを含むスクリプトが続きます: frames.productcatalog.location.replace (frames.productcatalog.location + location.hash);
...
実際の結果: 親ウィンドウが iframe に再帰的に読み込まれるため、クラッシュすることがあります。
期待される結果: Internet Explorer のように表示するだけです。
その後、2008 年にFirefox 2で再び(これには JavaScript も関係していました)。
そして2009年に再び。ここで興味深いのは、このバグがまだ未解決であり、この添付ファイル: (あなたの好奇心を抑えますか?) は依然として Firefox をクラッシュ/フリーズさせることです (テストしたところ、Ubuntu 全体がほとんどクラッシュしました)。Chrome では、無期限に読み込まれます (おそらく、各タブが別々のプロセスに存在するためです)。https://bugzilla.mozilla.org/attachment.cgi?id=414035
他のブラウザに関しては:
- 2005年、 Konquerorのセーフガードにバグがあり、iframeを別のフレーム内にレンダリングできました(ただし、アプリ全体がフリーズ/クラッシュすることはなかったようです)。
- IE6、Opera 7.54、および Firefox 0.9.3 も、iframe 再帰に基づく攻撃を受けやすいことが報告されています。