問題タブ [framebusting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - フレームバスターバスター…要バスターコード
他のサイトがあなたのサイトを「フレーム化」したくないとしましょう<iframe>
:
したがって、すべてのページにアンチフレーミング、フレーム バスティング JavaScript を挿入します。
優秀な!これで、含まれている iframe から自動的に「バスト」またはブレークアウトします。1 つの小さな問題を除いて。
結局のところ、ここに示すように、フレーム バスティング コードがバストされる可能性があります。
このコードは次のことを行います。
window.onbeforeunload
ブラウザーがイベント ハンドラーを介して現在のページから移動しようとするたびに、カウンターをインクリメントします。- を介してミリ秒ごとに起動するタイマーを設定し
setInterval()
、カウンターが増加したことを確認すると、現在の場所を攻撃者が制御するサーバーに変更します - そのサーバーは HTTP ステータス コード204でページを提供します。これにより、ブラウザはどこにも移動しません。
私の質問は、これは実際の問題というよりも JavaScript のパズルに近いものですが、どうすればフレーム バスティング バスターを無効にできるでしょうか?
いくつかの考えがありましたが、私のテストでは何も機能しませんでした:
onbeforeunload
経由でイベントをクリアしようとしてonbeforeunload = null
も効果がありませんでした- 停止したプロセスを追加すると
alert()
、プロセスが発生していることをユーザーに知らせることができますが、コードに干渉することはありません。[OK] をクリックすると、バスティングが通常どおり続行されます setInterval()
タイマーをクリアする方法が思いつかない
私はあまり JavaScript プログラマーではないので、ここであなたに挑戦します。ねえ、バスター、フレームバスター バスターをバストできますか?
javascript - ページソースへのアクセスによるフレームバスティングの防止
そのため、iframe にページをロードしています。この子ページは、親と同じドメインのキャッシュから読み込まれます。ただし、外部アセットはローカルにキャッシュされず、javascript を含む外部サイトから読み込まれます。あるサイトには、フレーム バスティング コードがあります。
これで、コーダーのソリューションを使用できることがわかりましたが、その影響やノックオンの問題が何であるかはわかりません。キャッシュされた子ページにアクセスできることを考えると、メソッドまたは値をオーバーライドして null をフレームバスティングにレンダリングするために、子に追加できるものがあるかどうか疑問に思っています。たとえば、<head>
私はこれを追加しようとした子供の:
と
非常に恐ろしい結果をもたらします (最初の例では無限のネスト、2 番目の例では完全なブラウザーのメルトダウン)。
フレームバスティングを無効にするために子に追加できるコードの提案はありますか?
それ以外の場合は、js をキャッシュして、フレームバスティング スクリプトを解析/置換する必要があります。
ありがとう
R.
そしてお願いします-これは合法です!!
javascript - フレームから脱出しようとしている場合にウェブサイトの読み込みを停止する方法
ですから、フレームから抜け出そうとするWebサイトがたくさんあることを知っています(フレームバスティング)そして、この周期的な「バスティングフレームバスター」や「バスティングフレームバスターバスター」などがあります。ウェブサイトはあなたのフレームから抜け出そうとしますか?プログラムでサイトをフレームにロードしようとしますが、それが失敗した場合は、その試行を中止してフレームのロードを停止します。これは私が以前に試したことです:
残念ながら、iframeを削除しても、元のサイトにリダイレクトされますか?フレームを削除して、リダイレクトが発生しないようにWebサイトをロードする試みを完全に放棄するにはどうすればよいですか?
iframe - PayPalとiframeベースのカートの統合
PayPalのPaymentsProNVP APIを使用して、当サイトでシームレスなクレジットカードとペイパルの処理を提供します。ユーザーがアイテムを購入してPaypalアカウントで支払うことができるように、顧客がサイトに配置するiframeベースのカートウィジェットを作成しました。
クレジットカードでの取引は正常に機能しますが、ユーザーがPayPalアカウントで支払いを行おうとすると問題が発生します。APIはPayPalロゴをクリックするときにリダイレクトを使用しますが、PayPalのコードはフレームバスティングスクリプトを実行しているようで、トランザクションを続行できません。
iframeを介した支払いでPayPalを希望するユーザーを処理する方法についての提案またはサンプルコードを探しています。1つのオプションは、新しいウィンドウをポップアップすることですが、ユーザーはそのウィンドウとiframeを含むウィンドウを切り替えて、PayPalウィンドウが表示しているものとカートを同期させないため、デザインに問題が発生する可能性があります。
javascript - フレームバスティングバスターがIEで完全に機能しない
私はフレームバスティングバスター(名前の由来はhehe)に取り組んでいます。これにより、ユーザーは自分のページにとどまり、ターゲットURLで新しいウィンドウが開きます。ライトボックススクリプトを使用してiframeを表示しています。これは、私が行っていることです。
1)すべての.lightboxクリックのイベントを追加しました。fe:
2)フレームバスティングバスターを追加しました:
3)私のニーズに合うようにフレームバスティングバスターコードを変更しました:
- iframeがwindow.top.locationを変更したいかどうかを検出します
- その場合は、204サーバーの応答を使用してこれが発生しないようにします
- 新しいページを開く:
window.open( $('#redirectURL', '_blank' );
- ライトボックスを閉じる:
$('.jquery-lightbox-button-close').click();
これまでのところ、これは私が思いついたものです:
// 編集:Before I forget, 'nocontent.php' is a file that returns a 204 header
Firefoxの場合、プログラムしたとおりに動作します。window.top.locationで変更が検出されると、新しいフレーム/ページが開き、iframeが一番上の場所を再読み込みして切り上げるのを防ぎ、jQueryライトボックスを閉じます。
Safari / Chromeも同様に動作し、新しいブラウザ画面を開きます(not sure if theres an option to say target="_newtab" or something?
)。唯一の悪い点は、ポップアップがブロックされているというメッセージが実際に表示されないことですが、ページへのリンクを含むポップアップバルーンをWebサイトに表示することで回避できます。
Internet Explorerは、なんと衝撃的なのか、残った唯一の黒い羊です。IEは新しいポップアップを開かず、iFrameによってリセットされたwindow.top.locationをブロックせず、ページ全体を「#targetURL」に更新し続けます。これはデフォルトのバスティングコードでも同じです。したがって、私の編集の一部が原因ではありません。
私のコードの間違いを見つけることができる人はいますか?
また、リクエストがiframeによって行われたのか、ユーザー自身によって行われたのかを確認するための少しの変更が必要になります。これは、ユーザーがツールバーのアドレスを変更したり、をクリックしてページを離れたりするオプションが実際にはないためです。リンク、これは本当に必要ではありませんLOL。
前もって感謝します。
javascript - フレームバスターが検出された場合はリダイレクト
自分のサイトからのヘッダーを含むアウトバウンド リンクを表示しています。一部のデータ プロバイダーにはフレーム バスターが配置されています。
私が達成しようとしているのは次のとおりです。フレーム無効化が行われていない (コンテンツが正常に読み込まれた) 場合は、フレームを表示します。フレーム無効化が行われている場合は、フレーム ソースであったページ全体を更新するだけですか?
それに関する投稿をいくつか見たことがありますが、ほとんどのコードでは、次のようなユーザーの操作が必要です。
それはうまく機能しますが、更新または戻るボタンが必要です。何もクリックせずにリアルタイムでそれを行うことは可能ですか?
JavaScript、Ajax、PHP のいずれであろうと、私はすべての代替手段に対してオープンです。
iframe - 例外のあるフレームバスター
フレームバスターバスターの書き方について質問があります。私はすでにフレームバスターバスターを読んでいます...バスターコードが必要ですが、追加の調整が必要です.
[ http://my_domain.c0m/blog]にある私のブログのコンテンツが、3 つの「ビュー」を示す別のサイトに表示されています。1 つのビューはフィードであり、特に気になりません。残りの 2 つは私を悩ませ、両方を壊したいです。フレーム化を許可したドメインの例外も許可したい。
あるビューでは、ブログの上部の HTML の上部からのコンテンツが最初にコピーされて「スナップショット」が作成され [ http://the_other_domain.c0m/copy_of_blog] 、そのコピーが [ http: //the_other_domain.c0m/ ]。したがって、この場合、「子」コピーは両方とも [ http://the_other_domain.c0m/]でホストされます。Google 翻訳も同様のことを行いますが、これで問題ないと思います。そのため、このフレームを破りたいと思いますが、Google や、自分の PC にコピーを作成し、フレーム化する可能性のあるユーティリティで表示したい人にも例外を許可します。
他のビューでは、私のサイトのコンテンツがフレーム化されているように見えます。したがって、この場合、[ http://my_domain.c0m/blog_post]は[ http://the_other_domain.c0m/] で囲まれています。この枠から抜け出したい。しかし、私の難点は、Google 翻訳や個人の PC ユーザーのフレームを自宅に置いたまま、その方法を理解できないことです。
これまでの私の解決策(私はJavaScriptに特に精通していません。したがって、冗長性と知識の欠如をあまり笑わないでください):
次を使用して最初のフレームをバストすることができました。
私はこれが非効率であることを知っています。しかし、それは機能し、a) フランスの私の読者が要求した googlecontent での翻訳、および b) ユーザーが PC にダウンロードするユーティリティでフレーミングしている場合 (uri の先頭が "FILE :".
問題: これは、自分のドメインでホストされているコンテンツが他のドメインでフレーム化されているビューでは機能しません。子ウィンドウで許可されていない var topWindow = String(top.location) まで問題を追跡したと思います。原則として、これは機能します:
ただし、[ http://translate.google.com] にもホストされている私のコンテンツの翻訳を保持するトップフレームを使用する Google 翻訳の使用を台無しにしていると思います。コピーがフレームに表示されている場合、誰かのPCにローカルコピーを表示する可能性のあるリーダーを同様に台無しにすると思います。
誰かが私を解決策に導くことができれば、例外を許可しながら両方のフレームを壊すために実装できます
ところで: 問題のサイトはフレームバスターを使用しているようです。/static/common.js?1345250291 コード内でこれを見つけました。
それは、特に密度の高い JavaScript の奥深くにあります。それが何をしても、コンテンツがコピーされて [ http://the_other_domain.c0m/]でホストされている場合、フレームをバストする能力には影響しないようです。単純なフレームバスターをバストするかどうかはまだ十分に調査していません。なぜなら、親フレームとは異なるドメインを持つ子フレームで「 var topWindow = String(top.location) 」が禁止されていることを最近認識したからです。
フレームバスターが存在するかどうかにかかわらず、ここで解決策を教えてください。あるサイトが私のコンテンツをこのようにフレーミングしている場合、不快なテクニックが普及するのは時間の問題であることを私は知っています. 前もって感謝します。
iframe - Salesforce ログイン フォームを iframe に表示する
IFrame 内にhttps://login.salesforce.comを表示できません。
アプリケーションとセールスフォースの間で OAuth を使用しています。ユーザー エクスペリエンスを向上させるために、ユーザーがアプリケーションのメイン ウィンドウから離れないようにしています。
助言がありますか?
問題を示すサンプル - http://jsfiddle.net/ngWxY/
iframe - フレームバスティングを回避するiFrameのオープンサイト
ポップアップとして開くiFrameでサイトを開こうとしています。一部のサイトでは、iFrame(フレームバスティング)で開くことができません。
これを検索しました。私はまたのようないくつかの解決策を持っています
beforeunloadは、サイト内を移動しているときでも実行されるため、機能しません。
そしてまた私は試しました
上記も機能していません。iFrameで開かれているURLにリダイレクトされます。
それで、IFrameでサイト(フレームバスターを持っている)を開くための解決策はありますか?
よろしく、Sagar Joshi