2013-07-11 2 views
2

Codeigniter에서 Ion Auth 인증 라이브러리를 사용하고 있습니다. 바닥 글보기를로드 할 때 CSRF 오류가 발생합니다 (이 양식 게시물은 보안 검사를 통과하지 못했습니다). 바닥 글보기를 제거하면 제대로 작동합니다! 내가 여기서 잘못하고 있는게 있니? 감사!(Codeigniter) Ion Auth CSRF 오류 :이 양식 게시물이 보안 검사를 통과하지 못했습니다 (보기를로드 할 때)

function edit_user($id) { 

//I'm only posting the last part of the code of edit_user function in the auth controller 

    $this->load->view('layout/header'); 
    $this->_render_page('auth/edit_user', $this->data); 
    $this->load->view('layout/footer'); // I'm getting an error when I load this footer view. 
} 

이것은 내보기에있는 코드입니다.

<h1><?php echo lang('edit_user_heading');?></h1> 
<p><?php echo lang('edit_user_subheading');?></p> 

<div id="infoMessage"><?php echo $message;?></div> 

<?php echo form_open(uri_string());?> 

     <p> 
      <?php echo lang('edit_user_fname_label', 'first_name');?> <br /> 
      <?php echo form_input($first_name);?> 
     </p> 

     <p> 
      <?php echo lang('edit_user_lname_label', 'last_name');?> <br /> 
      <?php echo form_input($last_name);?> 
     </p> 

     <p> 
      <?php echo lang('edit_user_company_label', 'company');?> <br /> 
      <?php echo form_input($company);?> 
     </p> 

     <p> 
      <?php echo lang('edit_user_phone_label', 'phone');?> <br /> 
      <?php echo form_input($phone);?> 
     </p> 

     <p> 
      <?php echo lang('edit_user_password_label', 'password');?> <br /> 
      <?php echo form_input($password);?> 
     </p> 

     <p> 
      <?php echo lang('edit_user_password_confirm_label', 'password_confirm');?><br /> 
      <?php echo form_input($password_confirm);?> 
     </p> 

    <h3><?php echo lang('edit_user_groups_heading');?></h3> 
    <?php foreach ($groups as $group):?> 
    <label class="checkbox"> 
    <?php 
     $gID=$group['id']; 
     $checked = null; 
     $item = null; 
     foreach($currentGroups as $grp) { 
      if ($gID == $grp->id) { 
       $checked= ' checked="checked"'; 
      break; 
      } 
     } 
    ?> 
    <input type="checkbox" name="groups[]" value="<?php echo $group['id'];?>"<?php echo $checked;?>> 
    <?php echo $group['name'];?> 
    </label> 
    <?php endforeach?> 

     <?php echo form_hidden('id', $user->id);?> 
     <?php echo form_hidden($csrf); ?> 

     <p><?php echo form_submit('submit', lang('edit_user_submit_btn'));?></p> 

<?php echo form_close();?> 
+0

바닥 글에 스크립트를 사용했거나보기 코드를 통과하여 코드에 문제가 있는지 확인할 수 있습니까? –

+0

필자는 뷰를로드하는 것을 제외하고는 인증 컨트롤러와 edit_user 뷰에서 아무 것도 수정하지 않았습니다. 기본적으로 뷰를로드 할 때 CSRF 오류가 발생하는 이유가 궁금합니다! = ( – Faizal

+0

내가보기에 문제가 있다고 가정하면, 잘못된 것을보기 위해보기 코드를 넣어주세요. –

답변

5

이온 인증 CS 보호가 더 오래되었습니다. CI-2는 이미 가지고 있습니다

이것은 포스팅시 보안을 제공합니다 (예 : POST는 로컬 또는 서버에서 제공됩니까?

이온 인증 컨트롤러 파일, 아래 코드처럼 참조 :이 검증을 제거하면, 당신은 CSRF 오류가

당신은 CI의 핵심 lib 디렉토리와 보안을 활성화 할 수 있습니다받지 않습니다

// do we have a valid request? 
if ($this->_valid_csrf_nonce() === FALSE) 
{ 
    show_error($this->lang->line('error_csrf')); 
} 

http://ellislab.com/codeigniter/user-guide/libraries/security.html

$config['csrf_protection'] = TRUE; 

당신은해야 form_open() 태그를 사용하여 csrf 보호를 triggger하십시오.

-1

나는 판매 pb를 가지고 있지만 userdata에 의한 flashdata를 대체합니다. 조금 덜 안전하지만 좋은 해결책입니다.

2

auth/reset_password 페이지에 common/headercommon/footer을 추가하려고 할 때 동일한 문제가 발생했습니다.

문제는 내가 바닥 글 부분에 포함 된 JS에 상대 경로를 사용하고 있다는 것이 었습니다. base_url()을 사용하여 많은 실험을 마친 후에 문제가 해결되었습니다.

+2

이것은 올바른 대답이어야합니다! – Prakash