Безопасность
Эта страница описывает «Лучшие практики» в отношении веб-безопасности, а так же о том, как CodeIgniter обеспечивает вашу безопасность.
Безопасность URI
CodeIgniter сильно ограничивает диапазон символов, которые могут быть указаны в URL, чтобы таким образом не передать в ваше приложение ничего вредоносного. URI могут содержать только следующее:
- Буквенно-цифровой текст
- Тильда: ~
- Точка: .
- Двоеточие: :
- Символ подчеркивания: _
- Дефис: -
GET, POST и COOKIE данные
GET запросы просто не принимаются системой, т.к. CodeIgniter использует URI на основе сегментов, вместо традиционной строки запроса (если вы хотите использовать строки запроса, то можете включить эту опцию в конфигурационном файле). Глобальный GET массив удаляется классом Input, подключающимся при инициализации.
Register_globals
При инициализации системы удаляются все глобальные массивы, за исключением $_POST и $_COOKIE. Их отключение равносильно опции register_globals = off.
magic_quotes_runtime
Директива magic_quotes_runtime отключается при загрузке системы, чтобы вам не пришлось удалять слеши при извлечении данных из базы данных.
Наилучшая практика
Прежде чем работать с любыми данными в вашем приложении, будь то POST из формы на сайте, COOKIE, информация из URI, XML-RPC и даже данными из массива SERVER, вы должны проделать три простых шага:
- профильтровать данные, как если бы они были «грязными»
- проверить данные на соответствие ожидаемой длине, типу, размеру и т.п. (в некоторых случаях этот шаг может заменить первый);
- экранировать данные перед отправкой в базу данных.
Фильтрация XSS
CodeIgniter поставляется с фильтром на Cross Site Scripting. Этот фильтр ищет популярные методы для встраивания вредоносного Javascript кода в ваш сайт и другие виды кода для блокировки cookies и тому подобных вещей. Фильтр XSS подробно описан здесь.
Валидация (проверка) данных
CodeIgniter имеет класс валидации, который поможет вам проверить ваши данные и подготовить их к записи в базу данных.
Экранирование всей информации перед вставкой в базу данных
Никогда не вставляйте информацию в базу данных без ее экранирования. Пожалуйста просмотрите страницу о запросах для получения дополнительной информации.