Безопасность
Подход Elgg к различным вопросам безопасности, общим для всех веб-приложений.
Совет
Чтобы сообщить о потенциальной уязвимости в Elgg, напишите на security@elgg.org.
Содержание
Пароли
Валидация пароля
Единственное ограничение, которое Elgg накладывает на пароль, — это то, что он должен быть длиной не менее 6 символов по умолчанию, хотя это можно изменить в /elgg-config/settings.php. Дополнительные критерии могут быть добавлены плагином путём регистрации для события registeruser:validate:password.
Хеширование пароля
Пароли никогда не хранятся в открытом виде, только солёные хеши, созданные с помощью bcrypt. Это делается через стандартную функцию password_hash(). На старых системах используется полифил password-compat, но алгоритм идентичен.
Установки Elgg, созданные до версии 1.10, могут иметь остаточные «устаревшие» хеши паролей, созданные с использованием солёного MD5. Они мигрируют в bcrypt при входе пользователей и будут полностью удалены при обновлении системы до Elgg 3.0. Тем временем мы рады помочь владельцам сайтов вручную удалить эти устаревшие хеши, хотя это заставит этих пользователей сбросить свои пароли.
Ограничение попыток ввода пароля
Elgg имеет механизм ограничения попыток ввода пароля, чтобы сделать атаки по словарю извне очень сложными. Пользователю разрешается только 5 попыток входа в течение 5 минут.
Сброс пароля
Если пользователь забывает свой пароль, можно запросить новый случайный пароль. После запроса отправляется электронное письмо с уникальным URL. Когда пользователь посещает этот URL, новый случайный пароль отправляется пользователю по электронной почте.
Сессии
Elgg использует обработку сессий PHP с пользовательскими обработчиками. Данные сессии хранятся в базе данных. Куки сессии содержат ID сессии, который связывает пользователя с браузером. Метаданные пользователя хранятся в сессии, включая GUID, имя пользователя, адрес электронной почты.
Время жизни сессии контролируется через конфигурацию PHP сервера и дополнительно через опции в /elgg-config/settings.php.
Фиксация сессии
Elgg защищает от фиксации сессии, перегенерируя ID сессии при входе пользователя.
Альтернативная аутентификация
Примечание
Этот раздел очень общий
Чтобы заменить систему аутентификации пользователей Elgg по умолчанию, плагин может заменить стандартное действие login на своё. Лучше было бы зарегистрировать обработчик PAM с помощью elgg_register_pam_handler(), который обрабатывает аутентификацию пользователя на основе новых требований.
HTTPS
Примечание
Вы должны включить поддержку SSL на вашем сервере, чтобы любые из этих методов работали.
Вы можете обслуживать весь свой сайт через SSL, изменив URL сайта, чтобы включить «https» вместо просто «http».
XSS
Фильтрация используется в Elgg, чтобы сделать атаки XSS более сложными. Цель фильтрации — удалить JavaScript и другой опасный ввод от пользователей.
Фильтрация выполняется через функцию elgg_sanitize_input(). Эта функция принимает строку и возвращает отфильтрованную строку. Она запускает событие sanitize, input.
По умолчанию Elgg поставляется с кодом фильтрации htmLawed. Разработчики могут добавить любой дополнительный или заменяющий код фильтрации в виде плагина.
Функция elgg_sanitize_input() вызывается для любого пользовательского ввода, пока ввод получен через вызов get_input(). Если по какой-то причине разработчик не хочет выполнять фильтрацию по умолчанию для некоторого пользовательского ввода, функция get_input() имеет параметр для отключения фильтрации.
CSRF / XSRF
Elgg генерирует токены безопасности для предотвращения cross-site request forgery. Они встраиваются во все формы и запросы AJAX, изменяющие состояние, при условии использования правильного API. Подробнее читайте в руководстве разработчика Формы и действия.
Подписанные URL
Возможно защитить URL с помощью уникальной подписи. Подробнее читайте в руководстве разработчика Формы и действия.
SQL-инъекция
API Elgg санирует весь ввод перед выполнением запросов к базе данных. Подробнее читайте в документации по дизайну База данных.
Конфиденциальность
Elgg использует систему ACL для контроля того, какие пользователи имеют доступ к различным фрагментам контента. Подробнее читайте в документации по дизайну База данных.
Усиление защиты
Администраторы сайта могут настроить параметры, которые помогут усилить защиту сайта. Подробнее читайте в руководстве администратора Безопасность.