Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.0

Search User Guide

# Класс безопасности (Security)

Класс безопасности содержит методы, которые помогают вам создавать безопасные приложения, обрабатывая данные для безопасности.

## XSS-фильтрация

CodeIgniter имеет защиту от атак Cross Site Scripting (скриптинг через сайт), который позволяет автоматически фильтровать все входящие данные POST и COOKIE, а также вы можете запускать фильтрацию вручную. По умолчанию фильтрация НЕ выполняется глобально, так как требует несколько больше процессорных ресурсов, что вам не потребуется в большинстве случаев.

Фильтр XSS ищет часто используемые техники для обнаружения JavaScript и других типов кода, которые позволяют угонять куки или делать другие опасные вещи. Если обнаружено что-то запрещенное, оно будет преобразовано в безопасные сущности.

Примечание: эта функция должна использоваться только при получении данных. Она не должна использоваться для общих процессов реального времени, так как требует некоторого количества серверных ресурсов.

Используйте эту функцию, чтобы профильтровать данные через фильтр XSS:

## $this->security->xss_clean()

Вот пример использования:

`$data = $this->security->xss_clean($data);`

Если вы хотите, чтобы фильтр автоматически запускался каждый раз, при получении данных POST или COOKIE, вы можете включить его, открыв ваш файл `application/config/config.php` и установив в нем:

`$config['global_xss_filtering'] = TRUE;`

Примечание: Если вы используете класс валидации форм, он также дает вам опцию XSS-фильтрации.

Второй опциональный параметр, is_image, позволяет проверять изображения на потенциальные XSS-атаки, что полезно для безопасной загрузки файлов. Когда второй параметр установлен в TRUE, вместо возвращения измененной строки, функция вернет TRUE, если изображение безопасное, или FALSE, если оно содержит потенциально опасную информацию, которую браузер может выполнить.

`if ($this->security->xss_clean($file, TRUE) === FALSE)
{
// файл провалил XSS тест
}`

## $this->security->sanitize_filename()

Принимая файловые пути от пользователей, имеет смысл очистить их для предотвращения обхода директорий и других вещей, связанных с безопасностью. Чтобы сделать это, используйте метод sanitize_filename() класса безопасности. Вот пример:

`$filename = $this->security->sanitize_filename($this->input->post('filename'));`

Если приемлемо разрешать пользователю указывать относительные пути, например `file/in/some/approved/folder.txt`, то вы можете установить второй опциональный параметр `$relative_path` в TRUE.

`$filename = $this->security->sanitize_filename($this->input->post('filename'), TRUE);`

## Межсайтовая подделка запросов (Cross-site request forgery, CSRF)

Вы можете включить защиту CSRF, открыв ваш `application/config/config.php` и установив в нем:

`$config['csrf_protection'] = TRUE;`

Если вы используете помощник форм, функция form_open() автоматически будет добавлять скрытое поле CSRF в ваши формы.

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter