首页 文章

奇怪的网址附加“#_ = _”[复制]

提问于
浏览
32

可能重复:播放框架追加#=在Facebook验证后通过OAuth2重定向?

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

我正在使用Facebook PHP SDK和一些Javascript构建一个Facebook画布应用程序 .
现在当我带领用户完成OAuth身份验证流程时,我注意到浏览器中的URL会自动附加此 "#_=_" ,因此我的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>"

对于应用资料页面 .

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

Update:

根据this bug on the tracker,这是设计使然,给 redirect_uri 的值不会改变这一点 .

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

这被标记为“按设计”,因为它可以防止潜在的安全漏洞 . 某些浏览器会将URL中的哈希片段附加到已重定向到的新URL的末尾(如果新URL本身没有哈希片段) . 例如,如果example1.com返回到example2.com的重定向,那么访问example1.com#abc的浏览器将转到example2.com#abc,而example1.com上的散列片段内容可以访问example2上的脚本.COM . 由于可以将一个auth流重定向到另一个,因此可以从一个应用程序访问另一个应用程序的敏感身份验证数据 . 通过将新的哈希片段附加到重定向URL来缓解此问题,以防止此浏览器行为 . 如果关注结果URL的美学或客户端行为,则可以使用window.location.hash(甚至是您自己的服务器端重定向)来删除有问题的字符 .

1 回答

  • 17

    见:https://developers.facebook.com/blog/post/552/

    更改会话重定向行为本周,当此字段留空时,我们开始向redirect_uri添加片段#_ = _ . 请确保您的应用可以处理此行为 .

相关问题