奇怪的网址附加“#_ = _”

时间:2011-09-20 12:25:54

标签: facebook facebook-php-sdk facebook-oauth

  

可能重复:
  Play Framework appending #= to redirect after Facebook auth via OAuth2?

还有其他人看到过这种情况吗?

我正在使用Facebook PHP SDK和一些Javascript构建Facebook画布应用程序 现在当我带领用户完成OAuth身份验证流程时,我注意到浏览器中的URL会自动附加此"#_=_",因此我的网址开始如下所示:

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

当我重定向到应用资料页面时,网址为:

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>"

for app个人资料页。

那么为什么#_=_会被追加?

更新

根据this bug on the tracker,这是设计使然,为redirect_uri提供值不会改变这一点。

根据official facebook reply on that page(必须登录Facebook查看帖子):

  
    

这被标记为“按设计”,因为它可以防止潜在的安全漏洞。

         

某些浏览器会将来自URL的哈希片段附加到已重定向到的新URL的末尾(如果该新URL本身没有哈希片段)。

         

例如,如果exam​​ple1.com返回重定向到example2.com,那么访问example1.com#abc的浏览器将转到example2.com#abc,并且可以访问example1.com中的哈希片段内容example2.com上的脚本。

         

由于可以将一个auth流重定向到另一个,因此可以从一个应用程序访问敏感的auth数据。

         

通过在重定向URL中附加新的哈希片段来防止此浏览器行为,从而减轻了这种情况。

         

如果关注结果URL的美学或客户端行为,则可以使用window.location.hash(甚至是您自己的服务器端重定向)来删除有问题的字符。

  

1 个答案:

答案 0 :(得分:18)

看到这个: https://developers.facebook.com/blog/post/552/

  

会话重定向行为的更改

     

本周,我们开始向redirect_uri添加片段#_=_   当此字段留空时。请确保您的应用可以处理   这种行为。