2011-08-22 35 views
5

私はブックマークレットにログインする必要があります。 ここにアイデアがあります....私はユーザーがログインするためのiframeを作成し、a/c情報を表示します。 しかし、私はサーバーからいくつかの情報を取得したいと思います。たとえば、ユーザーがこのページを自分のサーバーに既に追加しているかどうかを知りたいと思います。だから、私はアヤックスコールをしたいと思っていますが、同じ発信元ポリシーのために、私はアヤックスではできません。だから、どうすればiframeから情報を取得できますか?ブックマークレットでの認証方法

物語はこのようなものである:ログインしている場合> - - - >ユーザーがブックマークレットをクリックする

ユーザーのWeb>ボタンを「FAVに追加」が表示 - >ユーザーがボタンをFAVするアドオンをクリックし、 urlがサーバーに送信され、サーバーをリロードします。

ユーザーのWeb - >ユーザーがブックマークレットをクリック - >ログインしていない場合 - >ログインボタンを表示 - >ログイン成功 - ログインしている場合> - >ユーザーがブックマークレットをクリック - >前

ユーザーのWebようなフローを行います - >ウェブサイトが既にサーバーに追加されているかどうかを確認してください - > no favボタン

ご覧のとおり、iframeだけがログインしているユーザーの情報を保存しています。

+1

同じオリジンポリシーはiframe内のiircに影響しません。親ドキュメントにiframeを追加するだけです。ブックマークレットjs-codeの中で、親ページから必要なすべてのデータをiframeに追加してから、自分のドメインにajaxを含め、好きな方法でそれを再生することができます。 – aero

答えて

1

origin inheritance rulesに違反しているため、あなたは何をしていますか?これをこのように考えてください。あなたがこの戦いで別のウェブサイトから情報を得ることができたら、CSRF Tokensを読むか、自分のGmailアカウントから誰かの電子メールを読むことができます。

CSRFといえば、ほとんどのログインはユーザー名とパスワードを持つ簡単な投稿に過ぎません。あなたのウェブサイトにログインするのに必要なPOSTリクエストと同じシンプルな<form>を構築します。 JavaScriptを使用すると、ブラウザで新しく認証されたセッションにリダイレクトするフォーム上で.submit()と呼ぶことができます。実際にはこれはどのようにPOST based CSRF exploit worksです(ただし、通常CSRF攻撃では、ブラウザは既に認証済みであると仮定しています)。

もちろん、これはOpenIDやGmailのようなすべてのアプリケーションでは機能しません。これは、これらのサービスにはログイン要求とともにランダムな値が含まれることが多いからです。

関連する問題