これは少し複雑ですが、ストレートXSSのソリューションよりも正当なことがあります
あなたは、文書AにJavaScriptを書くしかし、あなたはドキュメントA内のiframeを開いている以外のサーバーを制御することはできません、ドキュメントAへの書き込みアクセスしかないことを示唆しています。これはちょっと混乱します。あなたは文書Aにjを書いているのか、それとも何らかの形で注射していますか?
いずれにしても、私は夢を見ました。 iframeを持つページをホストしているサーバーにアクセスできない場合は動作しません。
ユーザーは、iframe内のフォームにsubmitを押します。フォームが完了すると、そのフォームをホストしているサーバー上で何かが変更されます。したがって、ドキュメントAにはAJAX関数があり、フォームがまだ送信されているかどうかをサーバー側のスクリプトに確認します。もしそうであれば、スクリプトはAJAX関数に "サブミットされた"値を返します。これは別のjs関数をトリガしてiframeを閉じます。 IFRAMEを使用して、追加のサーバーサイドスクリプトを書く(これはクロスドメインの問題を回避し、以来できるサーバー上でホストされているページ上にある必要があり
:
上記のいくつかのことを必要とし理論的にはAJAXは同じディレクトリを指しています)。
iframe内のサーバーには、リクエスト可能なURLが必要です。フォームが送信されたという確認が返されます。
"submit-check-for-submit"スクリプトは、上記のURLと、そのURLを読み込む際に何を探すべきかを知る必要があります。あなたは上記のすべてを持っている場合
、Ajaxの機能は、サーバー・スクリプトを呼び出し、サーバー・スクリプトは、フォームが行われた場合に反映URLを行くためのcURLを使用して、サーバー・スクリプトは "を探しますフォームが提出された "インジケータを検索し、それが何であるかに応じて、"未提出 "または"提出 "の回答をajax関数に返します。
たとえば、フォームはユーザー登録用です。あなたの外部の文書がフォームに入力されるユーザー名を知っているならば、サーバー側スクリプトはhttp://example.org/username
に行き、 "ユーザーが見つかりません"というメッセージが表示されたら、まだフォームが送信されていないことを知っています。
上記の例で可能なことを超えるものは、とにかく安全で安全なものの外にある可能性があります。ユーザーがそれを提出したときにiframeを自動的に閉じることは非常に便利ですが、あなたの銀行口座が目を向ける必要があるというメールをあなたに送った可能性を考慮してください。メールには、自分が作成したページへのリンクがあります。このページには、自分の銀行のサイトのiframeがページの表示可能な部分全体を埋めるように設定されています。あなたは非常に信頼しているので、通常どおりログインします。あなたがページ上で投稿をヒットしたという事実にアクセスできれば、それはあなたが投稿したもの、またはiframeがリダイレクトされたURLにアクセスすることができたことを意味します(セッションIDが銀行がURLに含めてはならない他のデータ)。
私は説教をすることを意味しません。 1つのイベントについて知るためには、必要のない他のデータにアクセスできることがよくあります。
私はあなたの問題に少し優雅な解決策は、ユーザーがフォームで完了したときにiframeを殺す "終了"または "閉じる"と言うiframeの上にリンクを持つことだと思う。これは、ユーザーがフォームを送信したときにiframeを閉じるだけでなく、「おっと!私はこのフォームをとにかく入力したくありません。あなたの望む自動解決策では、ユーザーが提出するまで、iframeを取り除く方法はありません。
をそれは私がのdAを変更したい場合は、JSはdAのから来て持っている以下の回答から表示されます - ので、同様の質問を:私は上のボタンを持つことができますdAでフォームを送信しますか? – Mala
いいえ、まだdA/sAへのアクセスなしでは不可能です。 – Mark