Безопасность

Что происходит с загруженными файлами в 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 с аутентификацией и контролем прав либо специализированный внешний сервис.

Все статьи