보안 업그레이드

문서

참고

폼 헬퍼(Form Helper)를 사용하고 CSRF 필터를 전역적으로 활성화하면, form_open()이 폼에 숨겨진 CSRF 필드를 자동으로 삽입합니다. 따라서 직접 업그레이드할 필요가 없습니다.

변경된 사항

  • HTML 폼에 CSRF 토큰을 구현하는 방법이 변경되었습니다.

업그레이드 가이드

  1. CI4에서 CSRF 보호를 활성화하려면 app/Config/Filters.php에서 활성화해야 합니다:

    <?php
    
    namespace Config;
    
    use CodeIgniter\Config\BaseConfig;
    
    class Filters extends BaseConfig
    {
        // ...
    
        public $globals = [
            'before' => [
                // 'honeypot',
                'csrf',
            ],
        ];
    
        // ...
    }
    
  2. HTML 폼에서 <input type="hidden" name="<?= $csrf['name'] ?>" value="<?= $csrf['hash'] ?>" />와 유사한 CSRF 입력 필드를 제거해야 합니다.

  3. 이제 form_open()을 사용하지 않는 경우, HTML 폼의 본문 어딘가에 <?= csrf_field() ?>를 추가해야 합니다.

코드 예제

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>