3

iframe アプローチを使用して新しいキャンバス アプリを作成しています。私のバックエンドはキャンバス レスポンスに対して HTTP と HTTPS の両方をサポートしていますが、Facebook はデフォルトでユーザーを HTTP に設定し、すべての重要な資格情報 (signed_request ペイロードのアクセス トークンなど) をプレーン テキストで HTTP 経由で直接送信しているようです。もちろん、これは共有ネットワーク (コーヒー ショップ、オフィスなど、アクセス トークンを簡単に盗聴できる場所) におけるセキュリティ上の脆弱性です。

すべてのキャンバス リクエストが HTTPS 経由で動作するように強制し、ユーザーの資格情報を保護するにはどうすればよいですか?

私は、すべての開発者がこれを行うことを望む、または要求する必要があると考えています。私は Facebook の開発に不慣れですが、ユーザー アクセス トークンのすべての直接送信に HTTPS を使用していないことに驚いています。Oauth 1.0 には、HTTP 経由でアクセス トークンを使用できるようにするメカニズムがありました (要求はクライアント アプリケーションによって署名される必要があったため) が、OAuth 2.0 ではそのすべてが廃止され、資格情報が埋め込まれたすべての要求に HTTPS が使用されるようになりました。Facebook は OAuth 2.0 の設計を支援しましたが、キャンバス リクエストでの HTTPS の使用から逸脱することで、設計のセキュリティを弱体化させています。

4

1 に答える 1

0

これは、PHP または JavaScript を使用して簡単に行うことができます。ユーザーが HTTP を使用しているかどうかを検出し、代わりに HTTPS にリダイレクトするだけです。例:

<script>
if ( window.location.protocol == 'http:' ) {
   window.top.location = 'https://facebook.com/yourapp';
}
</script>

上記のコードは、HTTP を使用して iframe がロードされているかどうかを確認します。そうである場合は、親 URL (つまり facebook) をリセットして、Web サイトの HTTPS バージョンを指すようにします (したがって、iframe も HTTPS を使用してロードします)。

于 2012-07-23T17:03:12.653 に答える