【问题标题】:CSRF Hash is not coming in CodeigniterCSRF Hash 没有出现在 Codeigniter 中
【发布时间】:2016-09-10 17:03:34
【问题描述】:

我已经在 CI config.php 中将CSRF_PROTECTION 的值设置为TRUE,而且 FORM 助手已经设置为自动加载。

我在 CI 表单中使用了 form_open()form_close()

但我的问题是<?=$csrf['hash'];?> 的值始终为空。理想情况下应该有一些 CSRF 令牌。

【问题讨论】:

  • 请出示您的查看代码
  • 你想用<?=$csrf['hash'];?>完成什么?
  • 尝试对表单使用 csrf 保护
  • 您不需要该代码或您拥有的设置之外的任何其他内容,并使用form_open() 来进行 CSRF 保护。在为页面生成的 html 中,您会发现 <input type="hidden" name="csrf_token_name" value="some_big_token_hash"> name 属性将等于您在 config.php 中为 $config['csrf_token_name'] 设置的值
  • @DFriend 是的,一切正常,只是令牌的价值没有到来

标签: codeigniter security csrf


【解决方案1】:

您需要在<?=$csrf['hash'];?>之前放置以下数组

$csrf = array(
        'name' => $this->security->get_csrf_token_name(),
        'hash' => $this->security->get_csrf_hash()
);

然后它将显示带有 CSRF 令牌的隐藏字段。 https://www.codeigniter.com/user_guide/libraries/security.html#cross-site-request-forgery-csrf

但是如果使用form_open()form_close() 那么它会自动生成一个包含CSRF令牌的隐藏字段。

【讨论】:

  • 使用`form_open()'时不需要这个,它会使用token和hash自动在表单中放置一个隐藏的输入字段。
  • @Rejoanul Alam 是的,我已经在使用该数组了。但是仍然没有哈希值,但是 <?$csrf['name'];?> 值即将到来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-01
  • 2012-05-03
  • 2021-07-08
  • 2011-10-15
  • 1970-01-01
  • 2012-11-03
相关资源
最近更新 更多