WEBサイトの製作、管理、とかの日記ブログです。

<<   2023年05月   >>
SunMonTueWedThuFriSat
 123456
78910111213
14151617181920
21222324252627
28293031   
新着記事
カテゴリ
過去ログ
コメント
検索
iframeのsandboxを実験してみた
認証系サイトで、
ログインフォームのあるページでの広告利用で、
広告業者はフォーム入力内容見ることができるし、フォームのaction変更することなんかもできちゃう・・・

ってのをどうにかしたくて、
iframeのsandbox試してみた。
広告の方をsandboxしちゃマズイと思うんで、(物によってはいいだろうが)
こっちのフォームの方をsandbox iframeにする実験。

その前にまず、
<input type="password">
のあるログインフォームを広告スクリプトから隠したいんだが、
passwordのvalueってDOM操作したことないんで実験。
まあ、普通に読める。
JavaScriptだけでの認証なんかも考えられるし、当然だよね。

で、次にsandboxせずにiframeして、
親フレームのスクリプトから子フレームのinputのvalueが読めるか実験。
contentDocumentで出来た。

次にsandboxしてみたが、
Firefox12はsandbox非対応なようで変わらず。
Chrome19はsandbox対応なようで、親フレームから子フレームは読めなくなった。

sandboxするとフォームとtarget="_top"が効かなくなるが、
sandbox="allow-forms allow-top-navigation"
で機能するようになる。
これでもDOMで子フレーム読むことは不可。
allow-same-originつけちゃうと読めるようになる。

これで隔離は出来そうだ。
まあ、うちのサイトはFirefox推薦だから今は導入見送りかな・・・

これやる際の問題は、
HTML5でframeborder属性とかなくなって、
親フレームと子フレームを同じように見せたい場合はseamless属性使うようになってる。
んだが、
seamless属性はドキュメントが同一起源じゃないと機能しないようで、
seamlessとsandboxは同時に使えないとかって記述してるサイトがある。
でも、W3C見ると、平気なような・・・
seamlessとsandboxが同時に使えないんじゃマズイな・・・
まあ、W3Cの記述はちょっとわかりにくいから、実験だな。
だが、seamlessはChrome19でもまだ機能しないぽい。

seamlessならwidthとかheightも要らないと思うんで、
inputはサイズ調節が難しいからseamless対応ならその辺も楽だな。
ただ、クロスブラウザ考えると・・・

あと、iframeをsrc使わずにsrcdocで書きたいが、
srcdocもChrome19でダメだった。


seamlessとかsrcdocが使えるようになったらまた実験でとりあえず見送りだな。

この記事へのコメント
名前:
URL
コメント:
この記事へのトラックバック :
whblog 1.7