2011-07-28 20 views
2

私はCodeigniterでcsrf保護を有効にしました。 form_open()を使用して私は私のコントローラで確認する必要がある隠されたcsrf値を生成することができます。しかし、私は入力フィールドを提出するのではなく、フォームアクションを介してURLパラメータを渡すだけです。私は検証ルールなしで動作していないようフォーム検証なしのCodeigniter csrf保護

function delete_post($post_id = '') //post id passed via 3rd URL segment 
{ 
    if (is_int($post_id) && valid_post($post_id)) //valid_post() returns true if post id exists 
    { 
     $this->Posts_model->delete_post_model($post_id);   
     redirect('site'); 
    }     
} 

CSRF保護を持っているので、私のコントローラで

私は、検証ルールを設定する必要はありません。隠し入力経由でpost_idを渡さずにこの作業を行うことは可能ですか?

+0

フォームを投稿できますか? –

答えて

3

in the code of the Security classが表示されているように、CSRF保護はPOSTのデータでのみ機能します(フォーム検証は実際にはPOSTのデータでも機能します)。

CodeIgniterの方法で、POSTリクエストを使用する必要があります。 AJAXを使用している場合は、GETPOSTに変更し、フォームを使用している場合は、方法をpostに設定してください。あなたがそれを行うことができない場合は、CodeIgniterのコアコードと戦わなければならないので、理由を説明してください。 :)

関連する問題