34

重複の可能性:
Play フレームワークに # =を追加して、OAuth2 経由で Facebook 認証後にリダイレクトしますか?

他の誰かがこれが起こるのを見ましたか?

Facebook PHP SDK と Javascript を使用して Facebook キャンバス アプリを作成しています。
ユーザーを OAuth 認証フローに通すと、ブラウザーの URL に自動的に this が追加されることに気付きました。その"#_=_"ため、私の URL は次のようになります。

http://apps.facebook.com/xxxxxxxxxxxx/#_=_

アプリのプロファイル ページにリダイレクトすると、URL は次のようになります。

http://www.facebook.com/apps/application.php?id=xxxxxxxxxxxx#_=_

を使用してリダイレクトしています

echo "<script type='text/javascript'>top.location.href='$appcanvasurl';</script>"

キャンバス URL に

echo "<script type='text/javascript'>top.location.href='$appprofurl';</script>"

アプリのプロフィール ページ用。

では、なぜこれ#_=_が追加されるのでしょうか。

アップデート:

tracker のこのバグによると、これは仕様によるものであり、 に値を指定してredirect_uriもこれは変わりません。

そして、そのページの公式のFacebookの返信によると(投稿を表示するには、Facebookにログインする必要があります):

これは、潜在的なセキュリティの脆弱性を防ぐため、「設計による」とマークされています。

一部のブラウザーは、リダイレクト先の新しい URL の末尾に URL のハッシュ フラグメントを追加します (その新しい URL 自体にハッシュ フラグメントがない場合)。

たとえば、example1.com が example2.com へのリダイレクトを返す場合、example1.com#abc にアクセスするブラウザは example2.com#abc にアクセスし、example1.com のハッシュ フラグメント コンテンツは example2 のスクリプトからアクセス可能になります。 .com。

ある認証フローを別の認証フローにリダイレクトできるため、あるアプリの機密認証データに別のアプリからアクセスできるようになる可能性があります。

これは、リダイレクト URL に新しいハッシュ フラグメントを追加して、このブラウザの動作を防ぐことで緩和されます。

結果の URL の美学またはクライアント側の動作が問題になる場合は、window.location.hash (または独自のサーバー側リダイレクト) を使用して、問題のある文字を削除することができます。

4

1 に答える 1