4

Facebook用のキャンバスアプリケーションを開発していますが、ユーザーがキャンバスURLから直接アプリケーションにアクセスできないようにし(可能な限り、これは100%可能ではない可能性があることを認識しています)、ユーザーにアプリへのアクセスを強制したいと考えています。 apps.facebook.com/fooから。

私はphpを使用してアプリを開発しています。最初に考えたのは、$ _ POST配列で「signed_request」を確認することでした。これは、FacebookからCanvasアプリに渡される値であり、この値が存在しないが表示される場合はリダイレクトを送信します。この値は1回だけ渡され、ユーザーがアプリケーションで別のリンクをクリックしても、「signed_request」パラメーターは再度渡されません。

「HTTP_REFERER」を合理的に信頼して、ユーザーがhttp://apps.facebook.com/fooからアプリケーションにアクセスしていることを確認し、HTTP_REFERERがその値と等しくない場合にユーザーをリダイレクトできますか?

編集:apps.facebook.com/fooでのアプリの元のリクエストでは、HTTP_REQUESTヘッダーは'apps.facebook.com/foo'と同じですが、ユーザーがアプリのリンクをクリックするとHTTP_REQUESTになります。キャンバスのURLと等しくなります。

4

2 に答える 2

7

signed_requestパラメーターを確認し、それが有効な場合は、PHPセッション変数を使用してこれがFacebookベースのリクエストであるかどうかを追跡することをお勧めします。ただし、誰かが最初にFacebookでアプリを使用してから、アプリに直接アクセスすることを妨げることはありません。

あなたがすることができる追加のチェックはチェックするためにjavascriptを使用することです

window == window.top

あなたがフレームに入っているかどうかを教えてくれるはずです。

于 2011-06-09T16:03:04.647 に答える
1

cURLを使用すると、あらゆるリクエストを実際にシミュレートできます。したがって、REFERERを完全に安全にチェックすることはできません。しかし、ある程度は、URLをコピーして直接アクセスするだけの人々からの保護を提供します

于 2011-06-09T16:00:52.587 に答える