Рекомендации по безопасности
Мы серьезно относимся к безопасности. CodeIgniter включает в себя ряд функций и методов, которые либо обеспечивают соблюдение хороших практик безопасности, либо позволяют легко их соблюдать.
Мы уважаем Open Web Application Security Project (OWASP) и стараемся следовать их рекомендациям.
Следующее содержимое взято из OWASP Top Ten Cheat Sheet, где определены основные уязвимости веб-приложений. Для каждой уязвимости мы предоставим краткое описание, рекомендации OWASP и способы решения проблем с помощью CodeIgniter.
A1 Внедрение
Внедрение — это ненадлежащее вставка части или полного данных через входные данные клиента в приложение. Векторы атак включают SQL, XML, ORM, код и переполнение буфера.
Рекомендации OWASP
- Представление: установка правильного типа контента, набора символов и языка
- Отправка: валидация полей и предоставление обратной связи
- Контроллер: очистка входных данных; положительная валидация входных данных с использованием правильного набора символов
- Модель: параметризованные запросы
Реализации CodeIgniter
- Библиотека HTTP обеспечивает фильтрацию входных полей и метаданные контента
- Библиотека валидации форм
A2 Слабая аутентификация и управление сессиями
Недостаточная аутентификация или неправильное управление сессиями могут привести к тому, что пользователь получит больше привилегий, чем ему положено.
Рекомендации OWASP
- Представление: валидация аутентификации и роли; отправка токена CSRF с формами
- Проектирование: использование только встроенного управления сессиями
- Контроллер: валидация пользователя, роли, токена CSRF
- Модель: валидация роли
- Совет: рассмотрите использование управляющего запросами
Реализации CodeIgniter
- Библиотека сессий
- Библиотека безопасности обеспечивает валидацию CSRF
- Легко добавить стороннюю аутентификацию
A3 Межсайтовый скриптинг (XSS)
Недостаточная валидация входных данных, когда один пользователь может добавить контент на веб-сайт, который может быть вредоносным при просмотре другими пользователями веб-сайта.
Рекомендации OWASP
- Представление: кодирование вывода всех пользовательских данных в соответствии с контекстом вывода; установка ограничений на входные данные
- Контроллер: положительная валидация входных данных
- Советы: обрабатывать только надежные данные; не хранить данные, закодированные в HTML, в базе данных
Реализации CodeIgniter
- Функция esc
- Библиотека валидации форм
A4 Небезопасная прямая ссылка на объект
Небезопасные прямые ссылки на объекты возникают, когда приложение предоставляет прямой доступ к объектам на основе входных данных пользователя. В результате этой уязвимости злоумышленники могут обойти авторизацию и получить прямой доступ к ресурсам системы, например, к записям базы данных или файлам.
Рекомендации OWASP
- Представление: не раскрывать внутренние данные; использовать случайные карты ссылок
- Контроллер: получать данные из надежных источников или случайных карт ссылок
- Модель: проверять роли пользователей перед обновлением данных
Реализации CodeIgniter
- Библиотека валидации форм
- Легко добавить стороннюю аутентификацию
A5 Ненадлежащая конфигурация безопасности
Неправильная конфигурация архитектуры приложения может привести к ошибкам, которые могут поставить под угрозу безопасность всей архитектуры.
Рекомендации OWASP
- Представление: повышение уровня защиты веб- и прикладных серверов; использование HTTP Strict Transport Security
- Контроллер: повышение уровня защиты веб- и прикладных серверов; защита вашей XML-стека
- Модель: повышение уровня защиты серверов базы данных
Реализации CodeIgniter
- Проверки на правильность работы во время загрузки
A6 Раскрытие конфиденциальных данных
Конфиденциальные данные должны быть защищены при передаче по сети. К таким данным относятся учетные данные пользователя и данные кредитных карт. Как правило, если данные должны быть защищены при хранении, они должны быть защищены и при передаче.
Рекомендации OWASP
- Представление: использовать TLS1.2; использовать сильные шифры и хэши; не отправлять ключи или хэши в браузер
- Контроллер: использовать сильные шифры и хэши
- Модель: требовать надечной защищенной связи с серверами
Реализации CodeIgniter
- Хранение ключей сессии зашифрованным способом
A7 Отсутствие контроля доступа на уровне функций
Конфиденциальные данные должны быть защищены при передаче по сети. К таким данным относятся учетные данные пользователя и данные кредитных карт. Как правило, если данные должны быть защищены при хранении, они должны быть защищены и при передаче.
Рекомендации OWASP
- Представление: обеспечение того, что данные, не связанные с веб-приложением, находятся вне корневого каталога веб-приложения; валидация пользователей и ролей; отправка токенов CSRF
- Контроллер: валидация пользователей и ролей; валидация токенов CSRF
- Модель: валидация ролей
Реализации CodeIgniter
- Публичная папка, с приложением и системой вне её
- Библиотека безопасности обеспечивает валидацию CSRF
A8 Межсайтовая подделка запроса (CSRF)
CSRF — это атака, которая заставляет конечного пользователя выполнять нежелательные действия в веб-приложении, в котором он/она в настоящее время аутентифицирован.
Рекомендации OWASP
- Представление: валидация пользователей и ролей; отправка токенов CSRF
- Контроллер: валидация пользователей и ролей; валидация токенов CSRF
- Модель: валидация ролей
Реализации CodeIgniter
- Библиотека безопасности обеспечивает валидацию CSRF
A9 Использование компонентов с известными уязвимостями
Многие приложения имеют известные уязвимости и известные стратегии атак, которые можно использовать для получения удаленного управления или для использования данных.
Рекомендации OWASP
- Не использовать такие компоненты
Реализации CodeIgniter
- Третьих сторонние библиотеки, используемые в приложении, должны быть проверены
A10 Непроверенные перенаправления и переадресации
Неправильная бизнес-логика или внедренный выполнимый код могут перенаправить пользователя ненадлежащим образом.
Рекомендации OWASP
- Представление: не использовать перенаправление URL; использовать случайные косвенные ссылки
- Контроллер: не использовать перенаправление URL; использовать случайные косвенные ссылки
- Модель: валидация ролей
Реализации CodeIgniter
- Библиотека HTTP предоставляет …
- Библиотека сессий предоставляет flashdata
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/concepts/security.html