Это старая версия документа!
Содержание
Файл менеджер
🗺️ Общая архитектурная схема проекта
[ ПОЛЬЗОВАТЕЛЬ / БОТ / ХАКЕР ]
│
▼
┌────────────────────────────────────────────────────────┐
│ 1. index.php (Главный шлюз приложения) │
│ - Проверяет сессию │
│ - Если первый запуск ➔ перенаправляет на установку │
└──────────────────┬─────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────┐
│ 2. backend/core/initializer.php (Динамический корень) │
│ - Вычисляет APP_ROOT через __DIR__ │
│ - Создает папки: config/, storage/, system_logs/ │
└──────────────────┬─────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────┐
│ 3. backend/auth/check_ip.php (Первый рубеж защиты) │
│ - Сверяет IP с config/ip_blacklist.txt │
│ - Бан на месте: die() │
└──────────────────┬─────────────────────────────────────┘
│
├────────────────────────┐
▼ (Если не авторизован) ▼ (Если авторизован)
┌────────────────────────────────────────┐ ┌──────────────────────────────────────┐
│ 4. ЭКРАН АВТОРИЗАЦИИ / ИНИЦИАЛИЗАЦИИ │ │ 5. ГЛАВНЫЙ ИНТЕРФЕЙС (ДВА ОКНА) │
│ - Поля: Логин / Пароль │ │ │
│ - Скрытое поле: Honeypot (Ловушка) │ │ ┌──────────────────────────────────┐ │
│ - Восстановление: Строка из книги │ │ │ ВЕРХНЕЕ ОКНО │ │
│ │ │ │ [Имя / Путь] [Релизы ▼] [ZIP] │ │
│ backend/auth/validate_input.php │ │ ├──────────────────────────────────┤ │
│ - Вырезает XSS / Path Traversal │ │ │ Список файлов релиза │ │
│ │ │ │ (Имя | Примечание | Дата/Время) │ │
│ backend/auth/login.php/ register.php│ │ └──────────────────────────────────┘ │
│ - Хэширует пароли и текст книги │ │ ┌──────────────────────────────────┐ │
│ - Генерирует случайный 8-значный ID │ │ │ НИЖНЕЕ ОКНО │ │
│ - Сортирует и перетасовывает базу │ │ │ [README] [Лицензия] [Комментарий]│ │
│ │ │ │ [Лог действий (для админа)] │ │
│ │ │ ├──────────────────────────────────┤ │
│ │ │ │ Динамический текст (Fetch API) │ │
│ │ │ └──────────────────────────────────┘ │
└────────────────────────────────────────┘ └──────────────────┬───────────────────┘
│
▼ (Любое действие)
┌──────────────────────────────────────┐
│ 6. backend/router.php │
│ - Принимает AJAX / Fetch │
│ - Ставит "Маяки" при затыках │
└──────────────────┬───────────────────┘
│
┌───────────────────┴───────────────────┐
▼ (Действия Админа) ▼ (Логи системы)
┌─────────────────────────┐ ┌─────────────────────────┐
│ backend/actions/ │ │ storage/system_logs/ │
│ - list.php │ │ - app_errors.log │
│ - mkdir.php │ │ (Маяки отладки для нас)│
│ - delete.php │ │ - admins_activity.log │
└─────────────────────────┘ └─────────────────────────┘
🧩 Карта маскировки данных в backend/config/
Поскольку мы закладываем параноидальную защиту, вот схема того, как скрыты наши конфигурационные файлы, к которым имеет доступ только серверный PHP:
backend/config/
│
├── salt.php ───► [Возвращает: Секретный токен Супера (16 симв.)]
│ [ Секретный токен Админа (16 симв.)]
│ (Хакер в коде видит только шум, роли замаскированы)
│
├── email.php ───► [Возвращает: настоящий_email@супера.com]
│ (Спрятан от парсеров, выводится только при ошибке админа)
│
├── ip_blacklist.txt ───► [Список забаненных IP-адресов]
│
└── users.json ───► [ База данных - Перетасованный массив ]
┌──────────────────────────────────────────────┐
│ ID: 85910432 (Рандомный, отсортирован) │
│ Пароль: $2y$10$... (Защищенный хэш) │
│ Роль: x7R9wQ2pM4zL1vK8 (Случайный шум) │
│ Книга: $2y$10$... (Хэш контрольной строки) │
└──────────────────────────────────────────────┘
📂 Карта песочницы на диске (storage/)
Абсолютно безликая структура. Никаких названий компаний и имен. Только цифровые идентификаторы, сгенерированные нашей системой тасования.
storage/
│
├── 85910432/ ───► Личная папка Супер-админа (или Главного Админа)
│ ├── .system/
│ │ └── activity.log ───► Локальный лог действий на 100 строк (Ротация)
│ │
│ ├── Релиз_v1.0_Стабильный/ ───► Папка, которая отобразится в выпадающем списке
│ │ ├── app.exe ───► Файл для скачивания
│ │ ├── readme.txt ───► Текст для вкладки README
│ │ ├── license.txt ───► Текст для вкладки Лицензия
│ │ ├── comment.txt ───► Текст для вкладки Комментарий
│ │ └── .meta.json ───► Кто, что и когда правил в этом релизе
│ │
│ └── Релиз_v2.0_Бета/
│
├── 10294811/ ───► Личная папка Обычного Администратора №2
│ └── ...
│
└── system_logs/ ───► Доступ только для Токена Супер-админа
├── admins_activity.log ───► Кто из админов что делал в системе
└── app_errors.log ───► Все наши технические маяки для отладки
Создаем файл backend/config/paths.php
Этот файл использует магические константы PHP и глобальные массивы сервера, чтобы автоматически подстроиться под любое окружение.
backend/config/salt.php
Этот файл будет создаваться автоматически при самом первом запуске приложения. Он сгенерирует случайные 16-значные строки для ролей, которые заменят стандартные понятия super_admin и admin. Ни хакер, ни сторонний наблюдатель, заглянув в код, не смогут понять, какими правами обладает пользователь. Шаг 1. Серверный генератор солей (backend/core/salt_generator.php)Этот скрипт проверяет, существует ли уже файл salt.php. Если файла нет, он использует современную и безопасную функцию random_bytes(), генерирует два уникальных токена ролей и упаковывает их в чистый PHP-формат, возвращающий массив.Создаем файл backend/core/salt_generator.php:
