Безопасность
Эта страница описывает некоторые «лучшие практики» безопасности веба, и детали внутренних опций безопасности CodeIgniter.
Безопасность URI
CodeIgniter ограничивает символы, которые могут быть использованы в строках URI для того, чтобы минимизировать возможность передачи опасных данных в ваше приложение. URI могут содержать только следующее:
- Алфавитно-цифровые символы
- Тильду: ~
- Точку: .
- Двоеточие: :
- Подчеркивание: _
- Дефис: -
Register_globals
При инициализации системы будут разрушены все глобальные переменные, за исключением массивов $_GET, $_POST и $_COOKIE. Процедура разрушения действует также, как установка register_globals = off.
error_reporting
В окружении эксплуатации (production environment), как правило, жетательно отключать вывод ошибок PHP путем установки флага error_reporting в 0. Это отключит вывод родных сообщений об ошибках PHP, которые могут содержать потенциально конфиденциальную информацию.
Установка константы CodeIgniter-а ENVIRONMENT, которая находится в index.php в значение 'production' отключит вывод этих ошибок. В режиме разработки рекомендуется иметь значение 'development'. Больше информации по различиям между окружениями вы можете найти на странице Управление окружениями.
magic_quotes_runtime
Директива magic_quotes_runtime отключается при инициализации системы, поэтому вы не обязаны убирать слеши при получении информации из БД.
Лучшие практики
Перед тем, как получать данные в вашем приложении, такие как данные POST из форм, данные COOKIE, URI и XML-RPC, или любые данные из массива SERVER, предлагается использовать эти три шага:
- Всегда фильтровать данные, как будто если бы они были плохими;
- Валидировать данные, чтобы убедиться в их соответствии корректому типу, размеру, длине и так далее (иногда этот шаг заменяет предыдущий);
- Экранировать данные перед помещением их в БД.
CodeIgniter предоставляет следующие функции для этого процесса:
Фильтрация XSS
CodeIgniter имеет фильтр XSS — Cross Site Scripting. Этот фильтр ищет общие техники, используемые для внедрения опасного JavaScript в ваши данные, или другие типы кода, похищающего куки или выполняющего другие опасные действия. Фильтр XSS описан тут.
Валидация данных
CodeIgniter имеет класс валидации форм, который помогает вам в валидации, фильтрации и подготовке ваших данных.
Экранирование всех данных перед вставкой в базу данных
Никогда не вставляйте информацию в БД без ее предварительного экранирования. Пожалуйста смотрите обсуждение на странице запросы для получения дополнительной информации.