【问题标题】:Getting Codeigniter CSRF token without a form?在没有表格的情况下获取 Codeigniter CSRF 令牌?
【发布时间】:2012-11-03 10:29:32
【问题描述】:

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

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

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

【问题讨论】:

标签: php ajax codeigniter


【解决方案1】:

这是一个示例,向您展示如何启用 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>

【讨论】:

    【解决方案2】:

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

    $this->security->get_csrf_hash();
    $this->security->get_csrf_token_name();
    

    【讨论】:

    • 奇怪,在文档中找不到,但这正是我想要的。谢谢
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      • 2022-11-24
      • 2021-10-28
      • 2012-04-30
      • 2013-09-13
      • 2016-01-31
      • 1970-01-01
      相关资源
      最近更新 更多