[I128-2782] Неавторизованный вызов Admin/SaveOpts изменяет системные настройки


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2.6 >> [I128-2782] Неавторизованный вызов Admin/SaveOpts изменяет системные настройки📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Исправление ошибок 2026.2.6 🔘 Завершено Высший Ilya Mikhaylenko

Компоненты: ИРБИС 128. Модуль Admin - АРМ Администратор

Завершено: 02.09.2026 01:07

Проблема:

Системные настройки АРМ Администратор можно было изменить не только из защищенного интерфейса администратора, но и прямым вызовом Admin/SaveOpts. Такой запрос мог перезаписать конфигурацию приложения и нарушить работу сайта.

Решение:

Сохранение системных настроек теперь выполняется только для авторизованного пользователя с правом EDIT на модуль Admin. Прямые вызовы без нужных прав отклоняются до обработки переданных параметров, а некорректный набор настроек не применяется.

Технические подробности:

Проверка прав добавлена в серверный action и прямой __call-путь сохранения настроек. Запись config.php выполняется единым методом через безопасную сериализацию данных, без ручной сборки PHP-кода строковой конкатенацией. Внутренние системные сценарии, которым нужно сохранять настройки без пользовательского action, переведены на явный служебный вызов.


1. Проблема

Публичный action Admin/SaveOpts можно было вызвать напрямую через WIrbis без собственной серверной проверки прав. При этом config.php формировался ручной строковой конкатенацией значений $OPTIONS, что позволяло повредить конфигурацию специальными символами в значениях настроек.

2. Решение

3. Проверки


Разрешение текущих конфликтов подготовлено в PR #1359 (merge/release-2026.2-to-develop-pr1358 -> develop, commit 169484ec3bf1bde29110dd8cd22cf7f5b3fae057). Обе исходные ветки защищены от прямого push; отдельный PR сохраняет направление переноса release → develop. После принятия #1359 следует повторно проверить этот PR на новые изменения релизной ветки.

Перенос всех изменений из release/2026.2, которые ещё не входят в develop.

PR создан после merge #1353: I128-2785: SocketProxy отправляет внутренние HTTPS-запросы на порт 80.

Пока этот PR открыт, последующие изменения release/2026.2 входят в него автоматически. Перед merge требуется проверить полный diff и пройти обычное review.


Перенос накопленных исправлений release/2026.2 в develop с разрешением конфликтов PR #1358.

Обе исходные ветки защищены от прямого push. Отдельная ветка содержит merge текущего release/2026.2 (e402d81e4d2a59c87254ea3bd62fbd805d6bd332) в текущий develop (df8b1a8ee2d35e0cc0c5e776d64cb71f115013e4). Новые функции develop не переносятся обратно в релизную линию. Для принятия изменений используется обычное review; PR #1358 пока остается открытым.

Разрешение конфликтов:

Проверки:

При принятии сохранить merge-коммит и родителя release/2026.2 в истории develop (merge commit или fast-forward).

После принятия этого PR нужно повторно проверить #1358: если в release не появились новые изменения, его перенос будет полностью выполнен. Автоматизация последующих переносов release → develop не изменялась.