升级安全性
文档
备注
如果使用 表单辅助函数 并全局启用 CSRF 过滤器,那么 form_open() 将自动在表单中插入隐藏的 CSRF 字段。所以你不需要自行升级这个。
变更点
- 实现 CSRF 令牌到 HTML 表单的方法已经更改。 
升级指南
- 要在 CI4 中启用 CSRF 保护,必须在 app/Config/Filters.php 中启用它: - <?php namespace Config; use CodeIgniter\Config\BaseConfig; class Filters extends BaseConfig { // ... public $globals = [ 'before' => [ // 'honeypot', 'csrf', ], ]; // ... } 
- 在 HTML 表单中,必须删除类似 - <input type="hidden" name="<?= $csrf['name'] ?>" value="<?= $csrf['hash'] ?>" />的 CSRF 输入字段。
- 现在,在 HTML 表单中,必须在表单主体的某处添加 - <?= csrf_field() ?>,除非使用- form_open()。
代码示例
CodeIgniter 3.x 版本
<?php
$csrf = array(
    'name' => $this->security->get_csrf_token_name(),
    'hash' => $this->security->get_csrf_hash()
);
?>
<form>
    <input name="name" type="text">
    <input name="email" type="text">
    <input name="password" type="password">
    <input type="hidden" name="<?= $csrf['name'] ?>" value="<?= $csrf['hash'] ?>">
    <input type="submit" value="Save">
</form>
CodeIgniter 4.x 版本
<form>
    <input name="name" type="text">
    <input name="email" type="text">
    <input name="password" type="password">
    <?= csrf_field() ?>
    <input type="submit" value="Save">
</form>