Доступ и изоляция
Проектируемая система не должна давать клиентскому HTML, референсу или заданию доступ к данным платформы и чужих проектов.
Случайный адрес упрощает обмен ссылкой, но не заменяет проверку прав.
Это требования для реализации и проверки, а не результат завершённого security-аудита.
Автор и проект
Каждая команда и чтение приватного материала проверяют владельца проекта на сервере. Публичный ID не является паролем. Предпросмотр черновика имеет отдельный контроль доступа; запрет индексирования не делает страницу приватной.
Секреты AI-провайдера, базы и хранилища остаются на сервере. В браузере доступны только данные, необходимые автору для редактирования, либо посетителю для просмотра публикации.
Сборка и референсы
Загрузка URL должна проверять адрес назначения, перенаправления и ограничения размера/времени. Нельзя позволять референсу обращаться к внутренним службам и metadata endpoints. Изображение проверяется по фактическому содержимому, а не только имени файла.
Сборка выполняется с ограничениями ресурсов, сети и файловой системы. Рабочая среда одного задания не содержит секретов платформы и материалов другого проекта. Запрос модели не может расширить эти права.
Просмотр
Клиентские сайты выдаются на отдельном регистрируемом домене согласно принятому решению. Предпросмотр в редакторе тоже должен быть изолирован: отдельный origin, ограниченный iframe и проверка источника сообщений между окнами. Набор разрешений определяется необходимыми возможностями страницы.
Служебные cookies не распространяются на домен клиентского контента. Хранилище исходных материалов и Git-истории приватное; публичный доступ выдаёт только опубликованные файлы. Кеш учитывает сайт и версию.
Проверка границ
До запуска проверяем попытку открыть чужой черновик, изменить чужой проект, загрузить референс из внутренней сети и прочитать секрет из сборки. После отключения сайта проверяем не только основную выдачу, но и кеш. Для жалоб и блокировки публикаций нужен управляемый процесс, а не только сложный случайный адрес.