2012-01-27 12 views
1

オフサイトの第三者ウィジェットへのスクリプトの1つが実行中に破損し、自分のホームページのすべてのトラフィックをリダイレクトしました。リダイレクトするサードパーティ製スクリプトのグローバルインターセプタ

私はそれらを殺すことができないので、私はスクリプトを殺すか、サードパーティのJavaScriptがブラウザをリダイレクトするために行う可能性のある試行を打ち消す方法を見つけます。私が見つけたもっとも有望な出来事は.unload()window.onbeforeunloadです。私の考えは、GETリクエストを調べて、そのページの有効なリンクと一致しないURLを検証することです。私には分かりませんイベントのGET値を取得する方法は、ページ上のクリックやアクションに拘束されないが、第三者の.jsには何か他のものがありますか?

誰もがこのようなことに対する解決策を考えているのですか?

+0

なぜ、リダイレクトしないようにサードパーティのウィジェットを修正するだけではないのですか?私は、javascriptの他の部分がwindow.locationを設定する可能性があるすべての場所を「検証」する方法はないと思います。 – jfriend00

+0

はエンタープライズレベルのアプリケーション用の第三者独自のWebサービスインターフェイスであるため、実際にリダイレクトされることはなく、インシデントレポートは次のようになります。「何が起こったのか、何百万人のユーザーがホームページにリダイレクトされたのかわかりません「午後」と呼びます。これは、今後サードパーティのサービスのために再び起こることを防止するためです。 – HansOg

答えて

0

第三者javascriptがwindow.locationを設定してリダイレクトを引き起こしてプリフライトする可能性のあるすべての可能性のある場所を傍受する方法はわかりません。それはメソッドではなく、置き換える/オーバーライドするメソッドが存在しないという単なるプロパティです。

ページアンロードイベントは、本当にこのページを離れるかどうかをユーザーに尋ねるチャンスを与えますが、新しいページの宛先にアクセスすることはできません。

私が考えることができるのは、デフォルトでfalseになるブール値を含むグローバル変数を保持することだけです。コード内のページを変更する可能性があるすべての場所で、そのブール値をtrueに設定します。 onbeforeunloadハンドラでは、グローバル変数をチェックして、コードが実行したかどうかを確認します。あなたのコードで何かが実行されていない場合は、onbeforeunloadからメッセージを返すので、ユーザーは本当に離席するかどうかを尋ねられます。しかし、あなたはそれを防ぐことはできません(これは目的のブラウザデザインです)。プロンプトに「はい」と答えた場合、ページは新しい宛先に残ります。

第三者が誤ってリダイレクトを引き起こした理由を実際に把握できた場合は、状況が再び発生しないことを確認することに集中できますが、私たちはそれを本当に助けることはできません。

+0

意図的にスクリプトの解決方法を議論していない場合、実行中にリダイレクトが発生する可能性のあるサードパーティの問題を緩和するためのアイデアがあります。ごめんなさい。私はあなたの応答をありがとう!フロントエンドで普遍的な出口ガードをセットアップすることができれば幸いですが、このようなソリューションを実装する実用性は現時点では実現不可能です。 – HansOg

関連する問題