2011-07-24 1 views
1

こんにちは皆、
私はcodeigniterで基本的なFacebookアプリケーションを実装しました。 csrf_protection = false(クロスサイトリクエスト偽造が無効になる)まではうまく動作します。しかし、クロスサイトリクエスト偽造防止を有効にすると、csrf_protection = true(クロスサイトリクエスト偽造が有効になっています)。それは動作しません。だから私はcsrf_protection = TRUEで私のアプリを実行することができます。Facebookアプリケーションで有効なcsrf_protectionを使用中に問題が発生しました

事前のおかげで、 ABY

+0

おかげ@i_forget 、私は私の質問を編集しました – insomiac

答えて

0

あなたはFacebookのにリクエストを構築するとき、あなたは々ussuallyこれらのような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を有効にした場合は、上記保存する必要がありussualy ($ _GET [ 'コード']と辺に沿って)のFacebookから返された要求に検査し、次いで、フェイスブックにユーザをリダイレクトする前にセッションの$ crsf_state、

// 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"; 
} 
関連する問題