2010-10-22 3 views
0

В настоящее время, для проверки подлинности для моего Facebook App, я делаю следующее в PHP:Заголовок ("Местоположение: [URL]") ..... это безопасно?

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"]); 
     } 

Безопасно ли это/собственно? Не мог ли злоумышленник просто «перехватить» перенаправления и увидеть мой идентификатор приложения и секрет приложения?

+0

HTTP-заголовок не может быть многострочным. Это не сработает. –

ответ

6

Это определение небезопасного учебника. Заголовок Location:, как и все заголовки, отправляется в браузер пользователя с явной целью сделать эти данные известными в браузере пользователя. Содержимое заголовка будет доступно любому пользователю, на котором запущен прокси-сервер отладки (например, Charles или FireBug), и, как я подозреваю, в адресной строке браузера.

Это вполне приемлемо для отправки данных таким образом, если пользователю разрешено видеть эти данные (это часто бывает для приложений с одним знаком), но секрет приложения почти наверняка не приемлем.

Рассмотрите возможность использования curl для подключения непосредственно к серверу Facebook.

Смежные вопросы