そのため、ツールバー付きのページを作成し (localstorage を使用して変数を設定/取得する)、サイト固有のブックマークレットを作成してから、目的のサイトの iframe を作成しますwww.example.com
。[すばらしい RWD ブックマークレット ( http://responsive.victorcoulon.fr/ )から大いに借りたアイデア]。それはうまく機能しますが、そのブックマークレットへのクリック可能なリンクを提供したかったのですが (Ipad にブックマークレットを追加するのは面倒なので)、残念ながらリンクが 内に存在しないため、明らかな XSS クロスサイトの問題が発生しますwww.example.com
。
このエクスペリエンスを改善するために、loadScript
現在 に存在する既存の汎用関数を利用するポップアップ (twitter のような) を作成できるかどうか疑問に思っていましたwww.example.com
。現在、javascript コンソール内からwww.example.com
a を呼び出すことができ、supervar.loadScript("http://dl.dropboxusercontent.com/s/blah/thefile.js")
動作します。つまり、js を iframe に追加またはクロスロードする必要はありませんが、呼び出しを呼び出すには iframe 自体が必要supervar.loadScript
です。
たとえば、window.onload/document.ready タイプのシナリオで supervar.loadScript を呼び出すことができsupervar
ます。または、ポップアップ コードのコンテキストが about:blank/notexample.com を指している場合、存在しません。何かwindow.postMessage
の役に立ちますか?
更新: 明確化
サイトへの新しいウィンドウ/タブを開くJavaScriptコードを含むボタンを作成しようとしていますが、DOMの準備ができたときに存在する変数でコマンドを呼び出すことができます。繰り返しますが、私は XSS にまったく慣れていないので、これがサイトのセキュリティ上の問題であるかどうかはわかりません。あるサイトから次のサイトへの変数にアクセスしようとしているのではなく、ブックマークレットを使用せずにサイトにユーザースクリプトをロードする手段にすぎません。
実際のテストの場合:
訪問: firsttaste.kraftcanada.com
。javascript コンソールを開き、次のように入力します。 nitroWidget.loadScript("https://dl.dropboxusercontent.com/s/fcfbpfdmzrxywh9/mwolfe_alert.js")
これにより、アラート メッセージのみを含む mwolfe_alert.js が実行されます。
*.kraftcanada.com 以外のサイトにクリック可能なリンクを作成して、{document,window,$}.onload/read で nitroWidget.loadScript を呼び出すポップアップ/新しいタブを作成する方法はありますか?