проблема при использовании включенного csrf_protection с приложением Facebook - PullRequest
1 голос
/ 25 июля 2011

Привет всем,
Я реализовал базовое приложение Facebook с codeigniter.Работает нормально, пока csrf_protection = false (т.е. подделка межсайтовых запросов отключена).Но когда я включаю защиту от подделки межсайтовых запросов как csrf_protection = true (т.е. подделка межсайтовых запросов включена)Не работаетИтак, как я могу запустить свое приложение с csrf_protection = TRUE.

Заранее спасибо, aby

1 Ответ

0 голосов
/ 25 июля 2011

Когда вы создаете запрос на Facebook, у вас обычно есть такие URI, как эти ...

// If you want to enable CSRF, you can build some unique state and save it to session
$csrf_state = md5(uniqid(rand(), TRUE));
$this->session->set_userdata('fb_csrf_state', $csrf_state);
$dialog_url = 'http://www.facebook.com/dialog/oauth?client_id=" 
                    . $app_id . "&redirect_uri=" . urlencode($redirect_url)
                    . "&scope=publish_stream,user_about_me,user_birthday" 
                    . "&state="
                    . $csrf_state;

Если вы включили CSRF, то обычно вам нужно сохранить в сеансе выше $ crsf_state, прежде чем перенаправлять пользователя наFacebook, затем проверка с возвращенным запросом от Facebook (наряду с $ _GET ['code'])

 // Then you can inspect the CSRF state
 if($this->session->userdata('fb_csrf_state') == $_REQUEST['state'])
 {
     // This request valid, process...
 }
 else
 {
     // CSRF not valid, give user a warning
     echo "You may be a CSRF victim, please try again";
 }
...