Безопасность
- Автор mityok on июля 18th, 2008
Данная глава описывает основные подходы к безопасности web-приложений и некоторые подробности о функционале CodeIgniter связанном с безопасностью.
Безопасность URI
CodeIgniter достаточно строг по отношению к тому, какие символы допустимы в URI чтобы минимизировать возможность передачи подозрительных данных в приложение. Допустимыми символами являются:
- Цифро-буквенные последовательности
- Тильда "~"
- Точка "."
- Двоеточие ":"
- Подчеркивание "_"
- Знак минус "-"
Данные GET,POST и COOKIE
Данные GET по умолчанию запрещены в CodeIgniter, т.к. для передачи параметров используются сегменты URL (вы можете включить поддержку GET в конфигурационном файле). По умолчанию глобавльный массив GET очищается классом Input при инициализации приложения.
register_globals
При инициализации все глобальные переменные очищаются, кроме установленных в массивах $_POST и $_COOKIE. Процедура очистки практически соответствует установке опции register_globals=off.
magic_quotes_runtime
Директива magic_quotes_runtime отключается при инициализации, поэтому вам не нужно отрезать лишние слэши при чтении данных из БД.
Основные подходы к безопасности
Прежде чем обрабатывать полученные данные, будь то данные POST из формы,данные COOKIE, данные URI, XML-RPC, либо даже данные из массива SERVER, рекомендуется использовать простой подход из трех этапов:
- Фильтруйте как подозрительные.
- Проводите валидацию данных на соответствие ожидаемому типу, размеру данных и т.д.
- Проводите экранирование данных перед сохранением в БД.
CodeIgniter предоставляет следующую функциональность для обеспечения безопасной обработки
данных:
Фильтрация XSS
В CodeIgniter встроен фильтр Cross Site Scripting. Данный фильтр ищет наиболее распостраненные техники для вставки подозрительного JavaScript кода в данные, либо другие типы кода которые пытаются подменить куки или выполнить другие нежелательные действия.
Валидация данных
В CodeIgniter встроен класс _валидации_, который помогает проверять, фильтровать и подготавливать данные.
Экранирование данных перед вставкой в БД
Никогда не вставляйте данные в базу без экранирования. Пожалуйста, прочтите главу посвящённую запросам к базе данных.

Отправить комментарий