Вы можете включить защиту CSRF, изменив файл application / config / config.php следующим образом:
$config['csrf_protection'] = TRUE;
Если вы используете помощник по формам, то form_open () автоматически вставит скрытый csrfполе в ваших формах. Если нет, то вы можете использовать get_csrf_token_name()
и get_csrf_hash()
$csrf = array(
'name' => $this->security->get_csrf_token_name(),
'hash' => $this->security->get_csrf_hash()
);
<input type="hidden" name="<?=$csrf['name'];?>" value="<?=$csrf['hash'];?>" />
Жетоны могут быть либо регенерированы при каждой отправке (по умолчанию), либо сохраняться неизменными в течение всего срока действия файла cookie CSRF. Регенерация токенов по умолчанию обеспечивает более строгую безопасность, но может привести к проблемам с удобством использования, поскольку другие токены становятся недействительными (навигация назад / вперед, несколько вкладок / окон, асинхронные действия и т. Д.). Вы можете изменить это поведение, отредактировав следующий параметр конфигурации
$config['csrf_regenerate'] = TRUE;
Выбор URI может быть внесен в белый список из защиты csrf (например, конечные точки API, ожидающие внешнего POST-содержимого). Вы можете добавить эти URI, отредактировав параметр конфигурации ‘csrf_exclude_uris’
:
$config['csrf_exclude_uris'] = array('api/person/add');
Также поддерживаются регулярные выражения (без учета регистра):
$config['csrf_exclude_uris'] = array(
'api/record/[0-9]+',
'api/title/[a-z]+'
);
я думаю, что это очень полезно для вас.