2017-06-26 76 views
1

我嘗試exprimentation與Codeigniter Security Class,因爲我要實現這個框架的任何好的功能被黑客以避免SQL注入和惡意攻擊我的網站在那裏。笨get_csrf_hash()返回空


問:

爲什麼當我嘗試回聲或print_r的thisget_csrf_hash(),它只是不會出現任何東西。


我現在的碼

我的控制器

<?php 

class Myclass extends CI_Controller { 

    function __construct() { 

    parent::__construct(); 

    $this->load->library('session'); 
    $this->load->helper('security'); 
    $this->load->helper('form'); 

    $this->my_simple_login->chek_login(); 

    } 

    public function index(){ 

    $this->load->view('/myform'); 

    } // end index function (show form) 

    function submit_form(){ 

    print_r($this->input->post('my_input')); // YEAH 

    print_r($this->input->post('csrf_test_name')); //empty?? 

    print_r($this->security->get_csrf_hash()); //empty?? 

    } //end form submitted 

} // end class 

我查看

 <?php 
    defined('BASEPATH') OR exit('No direct script access allowed'); 

    ?><!DOCTYPE html> 
    <head></head><body> 

<?php 
      $attributes = array('class' => 'my_html_class'); // add class to form HTML 
      echo form_open_multipart('myclass/submit_form', $attributes); 
      ?> 

      <input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>"> 

      <input name="my_input" value="YEAH"/> 

      <button type="submit" >SUBMIT FORM</button> 

      <?php echo form_close(); ?></body></html> 

我的CI配置

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

如果使用form_open_multipart CSRF它是自動生成的,你不需要創建另一個CSRF輸入 – user4419336

+0

所以這意味着,即使我不是創造CSRF輸入它的工作。但是爲什麼'get_csrf_hash()'不會返回任何(在我的表單上有或沒有csrf輸入)。 @ wolfgang1983 –

回答

0

這problerm固定。因爲我不是在笨配置文件設置TRUE$config['global_xss_filtering']

$config['global_xss_filtering'] = TRUE;