16

我在我的网站上启用了 CSRF 保护,但 CSRF 令牌唯一一次放置在隐藏字段中是在form_close()使用时。我正在通过 ajax 发布数据,并且还需要发送 CSRF 以防止 500 错误。

我认为有一种方法可以将 CSRF 令牌显式嵌入到页面中,但我似乎找不到它。

当页面上没有表单时,如何获取 CSRF 令牌?

4

3 回答 3

43

您可以通过安全类获取 CSRF 令牌名称和值:

$this->security->get_csrf_hash();
$this->security->get_csrf_token_name();
于 2012-11-14T20:57:22.383 回答
12

以这种方式将其添加到表单中

<input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>">
于 2015-02-02T11:00:20.303 回答
0

这是一个示例,向您展示如何启用 CSRF 攻击模式:

<script>
    
  var cct = '<?php echo $this->security->get_csrf_hash() ?>';
  var get_csrf_token_name = '<?php echo $this->security->get_csrf_token_name() ?>';
  
   $.ajaxSetup({
   type:'post',
  data:{ <?php echo $this->security->get_csrf_token_name() ?> :cct}
   });
   
  
    var siteurl = '<?= site_url()?>';        
       
   </script>

于 2017-07-18T00:40:01.090 回答