目前,对于我的Facebook App的身份验证,我在PHP中执行以下操作:
if($_GET["code"] == null)
{
Header("Location: https://graph.facebook.com/oauth/authorize?
client_id=[MY_APP_ID]&
redirect_uri=[THIS_CURRENT_URL]&
scope=publish_stream");
exit();
}
else if($_GET["access_token"] == null)
{
$code = $_GET["code"];
Header("Location: https://graph.facebook.com/oauth/access_token?
client_id=[MY_APP_ID]&
redirect_uri=[THIS_CURRENT_URL]&
client_secret=[MY_APP_SECRET]&
code=$code");
exit();
}
else
{
echo($_GET["access_token"]);
}
这样安全吗?恶意用户难道只是“拦截”重定向并看到我的App ID和App Secret吗?
答案 0 :(得分:6)
这是不安全的教科书定义。 Location:
标题与所有标题一样,都会发送到用户的浏览器,其明确目的是让用户的浏览器知道该数据。任何运行调试代理的用户(如Charles或FireBug)都可以使用标题的内容,我强烈怀疑,它也可以在浏览器的地址栏中使用。
如果允许用户查看该数据(通常是单点登录应用程序的情况),以这种方式发送数据是完全可以接受的,但应用程序机密几乎肯定是不可接受的。
请考虑使用curl
直接连接到Facebook服务器。