如何通过PHP curl登录使用facebook连接的网站

时间:2010-12-28 10:14:49

标签: php authentication cookies curl login

我需要在使用facebook连接登录的网站上使用php curl登录我的帐户。

我将以我最喜欢的应用程序之一为例:Mousehunt

正如你所看到的,它使用facebook(当然)登录:如果你已经连接到facebook,它会成功自动登录,否则会弹出facebook登录。

我如何使用php curl登录?我知道一些关于curl& cookie(cookiejar,cookiefile,post等),但不是太多。

哪个是发布数据的目标网址?如何在用户登录后返回该站点?

2 个答案:

答案 0 :(得分:2)

让我解释一下这种FB登录是如何工作的。当然,桌面应用程序使用的备用方法可以实现,但本网站不使用它。

所以继续这笔交易:

登录按钮在facebook服务器上打开一个链接,其中包含网站的api密钥和一些任意信息。到现在为止还挺好。你可以很容易地模拟它。

然后在接受隐私资料后,您将被重定向回网站。你也可以模拟它。

然后是负担:

您重定向到的位置在主题标签(#)后面包含一个facebook标记。

然后网站可以通过Javascript读取此令牌,并使用它来查询facebook api以确认您的权限。

这样做的原因很简单:

想一想。每个人都可以在网站名称中伪造请求并读取您的私人数据。但是,主题标签之后的所有内容都不会被请求所针对的服务器读取。 Web浏览器只是没有通过它,它会违反http标准并导致错误。

访问它的唯一方法是使用javascript。这只能通过服务请求的网站(facebook重定向到的地方)。 facebook重定向到的域名由应用程序密钥所有者锁定。

您认为javascript是此处安全性的重要组成部分。

我认为它确实非常不安全,因为有许多可能的探索,但它非常容易,这就是为什么这种形式的登录在与例如的OpenID。

总结一下:你需要模拟一个完全启用javascript的浏览器。它部分可能但非常复杂,没有开箱即用的解决方案。

答案 1 :(得分:1)

好吧,可能有办法。 看起来像facebook请求不以任何方式签署权限范围。 所以这基本上意味着您可以授予应用程序/网站更多的权限。

然后你可以授予网站的永久权限 - 以通常的方式登录 - 并保存cookie。

然后你可以发送这些cookie和卷曲。 如果网站使用服务器端登录身份验证,很可能,您仍然会登录,因为访问令牌是永久性的。

然而,无法确保该黑客能够保持正常运作。