Codeigniter csrf_regenerate - PullRequest
       1

Codeigniter csrf_regenerate

0 голосов
/ 27 апреля 2018

Я использую csrf, чтобы опубликовать мою форму выглядит следующим образом:

<form action="<?php echo base_url()."lang_control/one_lang_faq_add"?>" accept-charset="UTF-8" method="post">
    <div class="form-group">
      <label>ВОПРОС:</label>
      <input class="form-control faq_add_quest_input" placeholder="Введите вопрос" name="faq_quest">
      <input type="hidden" class="faq_add_id_input" name="lang_id">
    </div>
    <div class="form-group">
      <label>ОТВЕТ:</label>
      <input class="form-control faq_add_answer_input" placeholder="Введите ответ" name="faq_answer">
    </div>
    <input type="hidden" name="<?php echo $csrf['name'];?>" value="<?php echo $csrf['hash'];?>">
    <button type="submit" class="btn btn-primary" >Submit</button>
</form>

В конфиге я установил:

$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_exclude_uris'] = array();
$config['csrf_expire'] = 7200;
$config['csrf_regenerate']  =  TRUE;

Мой метод контроллера form_action

  public function one_lang_faq_add(){
        $this->load->model('one_lang_redact');
        $answer = $this->input->post('faq_answer');
        $quest = $this->input->post('faq_quest');
        $id = $this->input->post('lang_id');
        $array = array('answer'=>$answer,'quest'=>$quest,'id'=>$id);
        echo $this->one_lang_redact->lang_faq_add($array);
    }

Метод контроллера просмотра моей страницы

 public function __construct(){
            parent::__construct();
            $this->load->database();
            $this->input->post(NULL, TRUE);
            $this->input->get(NULL, TRUE);
            $this->load->library('session');
            $this->load->helper('url');
            $this->load->helper('html');
            $this->load->helper('form');
            $this->_csrf  =  array( 
                'name' => $this->security->get_csrf_token_name(), 
                'hash' => $this->security->get_csrf_hash() 
            );
        }
    public function one_lang_redact($id){
            $this->load->model('one_lang_redact');
            $CFG =& load_class('Config', 'core');
            header('Content-type: text/html; charset=' . $CFG->item('charset'));
            $one_lang = $this->one_lang_redact->select_one_lang($id)->row();
            $lang_faq = $this->one_lang_redact->select_lang_faq($id)->result();


            $key = array("lang" => $one_lang, "lang_faq" => $lang_faq, "csrf"=>$this->_csrf);
            $this->load->view('one_lang.php',$key);
        }

А именно, csrf_regenerate должен обновлять мой токен csrf после каждого запроса Но этого не происходит, токен открывается только тогда, когда я вручную удаляю cookie

Помогите, что нужно сделать, чтобы для каждого поста запрос csrf был разным Пожалуйста, помогите мне D:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...