【问题标题】:Codeigniter how to csrf validation?Codeigniter如何进行csrf验证?
【发布时间】:2017-07-10 07:16:13
【问题描述】:

我是 codeigniter 的新手,如何在表单中验证 CSRF 令牌。

我的表格是:

<?php echo form_open('admin/create_cta', array('class' => 'navbar-form navbar-left', 'id' => 'new-cta')); ?>
            <div class="form-group">
                <input type="url" class="form-control" id="navbar-search-input" name="url" placeholder="Enter a URL">
                <span class="form-group-btn">
                <button type="submit" class="btn btn-info btn-flat">Create CTA</button>
                </span>
            </div>
            <?php echo form_close(); ?>

config.php

$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();

控制器

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

class Admin extends CI_Controller {

    public function create_cta()
    {
        $data = $this->input->post();
        var_dump($data);
    }

}

我没有得到 csrf 输入值。这里是“var_dump($data);”结果。

array (size=1)
  'url' => string 'https://www.google.co.in/' (length=25)

【问题讨论】:

  • 检查生成的表单 html。你那里有 csrf-field 吗?
  • 在表单中使用 form_open()
  • 只是为了观察它的创建...使用您的浏览器,查看页面然后检查源...查看生成的表单代码并查看 csrf 令牌是否包含在表单中问题。
  • 请告诉我如何进行 csrf 验证?

标签: php codeigniter-3


【解决方案1】:

您可以获得 Csrf 令牌值,例如,

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

...

<input type="hidden" name="<?=$csrf['name'];?>" value="<?=$csrf['hash'];?>" />

参考此链接https://www.codeigniter.com/user_guide/libraries/security.html

【讨论】:

  • 这没有回答问题:如何验证 CSRF token namehash?您的帖子只提到了如何生成这些值。
猜你喜欢
  • 2018-01-21
  • 1970-01-01
  • 2017-06-05
  • 2018-09-15
  • 2022-08-05
  • 2011-10-15
  • 2020-06-24
  • 2013-01-05
  • 1970-01-01
相关资源
最近更新 更多