web-dev-qa-db-ja.com

クライアント側でiFrameをブロック(または条件付きで承認)する方法はありますか?

iFrameが多くの一般的なエクスプロイトで使用されていることを考えるとGMail 、または MasterCard SecureCode .

<object>タグにも関連機能があるのではないかと思います。

  • クライアント側でiFrame(および<object>)の使用を条件付きでブロックする方法はありますか?
7

一部のブラウザでは、iframeを無効にして、サイトごとの設定で使用するように設定できます。 operaがこの機能を提供します。

から Quirksmode

Iframeを無効にする

  • IE9:インターネットオプション->セキュリティ->カスタムレベル(インターネットゾーンの場合)->(スクロールダウン)-> IFRAMEでのプログラムとファイルの起動->無効に設定。
  • Firefox:about:configに移動->「フレーム」を検索-> browser.frames.enabledをクリック
  • Opera:Ctrl + F12->詳細設定->コンテンツ->スタイルオプション->インラインフレームを有効にするのチェックを外します

さらに、 privoxy のようなプロキシでルールを作成して、すべてのiframeを除外し、iframeを作成したいサイトを除外することもできます。組み込みの動作はiframeの追加のみを行うと思いますが、調整することができます。これにより、よりグローバルなブロッキングが行われます。開始タグを見つけて、それが閉じられるまで削除するには、正規表現が本当に必要です。ページが壊れる場合もあります。


編集、operaは実際にはiframeを無効にしません。上記のquirksmodeリンクでiframeを無効にしましたが、それでもiframeが登録されています。これは Operaフォーラム で確認されています。 =。完全なquirksmodeページが古くなっていることを望んでいました。

opera screenshot

ユーザースクリプト、ブラウザ機能などに依存する前に、プロキシレベルでブロックするのがおそらく最良の結果です。また、より一般的です。

1
Eric G

IFrameはHTML仕様の一部であるため、通常、これは難しいものです。 Hoorayブラウザースクリプト!

1つの解決策は、FireFoxのgreasemonkeyスクリプトまたはChromeの埋め込みスクリプトを使用することです。これは、あなたがやりたいことやもう少しやっていると主張するGreasemonkeyスクリプトへのリンクです。

http://userscripts.org/scripts/show/32192

希望する正確な結果を得るために少し調整する必要があるかもしれませんが、これでうまくいくはずです。

共有してお楽しみください。

1
grauwulf

エクスプロイトキットまたはエクスプロイトページへのリンクを含むiframeの影響を受けないようにしたいだけの場合は、FirefoxまたはNotScriptsにNoScriptを使用する方がよいでしょう。必要な種類の条件付きブロックを実行し、エクスプロイトにつながる可能性のあるほとんどすべてをブロックできます(Javascript、Java、Flash、Silverlightなど)。 iframeが読み込まれていても実行できるスクリプトがない場合、それは完全に無害です。

これはおそらく、iframeをブロックするよりも安全だと思います。アクセスしたサイトがハッキングされた場合でも、攻撃者が実行できない理由はありません<script src="http://evilsite.com"></script>には、悪意のあるJARをロードしてから悪意のあるSWFをロードするコードが含まれています。外部ドメインから任意のコードをロードできるのはiframeだけではありません。

0
Anorov