标题(“位置:[URL]”).....安全吗?

时间:2010-10-22 17:32:44

标签: php facebook

目前,对于我的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吗?

1 个答案:

答案 0 :(得分:6)

这是不安全的教科书定义。 Location:标题与所有标题一样,都会发送到用户的浏览器,其明确目的是让用户的浏览器知道该数据。任何运行调试代理的用户(如Charles或FireBug)都可以使用标题的内容,我强烈怀疑,它也可以在浏览器的地址栏中使用。

如果允许用户查看该数据(通常是单点登录应用程序的情况),以这种方式发送数据是完全可以接受的,但应用程序机密几乎肯定是不可接受的。

请考虑使用curl直接连接到Facebook服务器。