Безопасность
Что происходит с загруженными файлами в Deploya
Изоляция проектов, запрет серверного исполнения, публичные URL ресурсов и ограничения статического хостинга.
Файл в опубликованном статическом сайте считается публичным. Если `price.xlsx` лежит в папке проекта, его можно запросить по URL, даже когда на странице нет ссылки. Случайное имя уменьшает вероятность перебора, но не превращает ресурс в закрытое хранилище. ## Разделение проектов Каждый проект хранится в собственном каталоге и обслуживается по привязанному домену. Одинаковые пути у разных клиентов не конфликтуют: `/img/logo.png` на двух доменах указывает на разные каталоги. URL сохраняет исходную структуру, потому что HTML и CSS ссылаются на неё. Замена всех ресурсов на случайные адреса сломала бы относительные ссылки и переносимость проекта. Изоляция выполняется на уровне корня сайта, а не уникального имени каждого изображения. ## Серверный код Файлы `.py`, `.php` или `.js` можно хранить как статические ресурсы, но сервер не исполняет их как программу. JavaScript запускается только в браузере посетителя, если подключён страницей. Это не даёт загруженному проекту читать SQLite Deploya, запускать команды ОС или обращаться к каталогам соседних сайтов. ```text script.js → отдаётся браузеру и выполняется в браузере server.py → хранится как файл, на сервере Deploya не запускается index.php → не обрабатывается PHP-интерпретатором ``` Расширение не делает файл безопасным автоматически. HTML и JavaScript способны отправлять данные на внешние адреса, показывать фальшивую форму входа или загружать сторонний код. Публичные проекты требуют модерации жалоб и технических ограничений заголовков, но владелец остаётся ответственным за размещённое содержимое. > Место для скриншота: дерево Assets и пояснение «статические файлы — серверный код не исполняется». ## Что нельзя загружать В проект не кладутся API-ключи, пароли, резервные копии базы и документы с персональными данными. Файл `.env` не нужен браузерному сайту. Секрет, встроенный в JavaScript, можно прочитать через DevTools независимо от минификации. Аватары, превью и файлы сайта учитываются в хранилище аккаунта. Удаление проекта должно удалять связанные публикации по правилам сервиса, но локальная копия исходников всё равно нужна владельцу. Если странице требуется закрытый кабинет, проверка пароля или доступ к частным данным, одной статической разметки недостаточно. Нужен backend с аутентификацией и контролем прав либо специализированный внешний сервис.