防止Facebook画布应用程序直接/在Facebook外访问

Cas*_*ynn 4 php facebook canvas facebook-php-sdk

我正在为facebook开发一个canvas应用程序,我想阻止用户直接从画布URL访问应用程序(尽可能地,我意识到这可能在100%的时间内都不可能)并强制用户访问应用程序来自apps.facebook.com/foo.

我正在使用php开发应用程序,我的第一个想法是检查$ _POST数组中的'signed_request',这是从facebook传递到画布应用程序的值,并且如果此值不存在则发送重定向但它出现此值仅传递一次,当用户在我的应用程序中单击不同的链接时,'signed_request'参数不会再次传递.

我可以合理地信任'HTTP_REFERER'以验证用户是否从http://apps.facebook.com/foo访问该应用程序并在HTTP_REFERER不等于该值时重定向用户?

编辑:我实际上只是注意到在apps.facebook.com/foo上对应用程序的原始请求时,HTTP_REQUEST标头等于'apps.facebook.com/foo',但是当用户单击应用程序中的链接时HTTP_REQUEST变得等于画布网址.

Dar*_*con 7

我建议您检查signed_request参数,如果它有效,请使用PHP会话变量来跟踪这是否是基于Facebook的请求.它不会阻止某人在Facebook上使用您的应用程序,然后直接转到应用程序.

您可以执行的其他检查是使用javascript进行检查

window == window.top
Run Code Online (Sandbox Code Playgroud)

哪个应该告诉你你是否在一个框架中.