# Приватный репозиторий не закрывает сайт: три уровня закрытости

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

URL: https://posts.danashkin.ru/guides/privatnyy-repozitoriy-ne-zakryvaet-sayt
Обновлено: 2026-09-04

---

## Коротко

**Главное**

- Приватный репозиторий закрывает исходный код, а не страницу. Сама ссылка после первого деплоя открывается у любого, кто её получил.
- Настройки хостинга на бесплатных тарифах закрывают служебные и черновые адреса, а основной остаётся публичным. У части площадок такой настройки нет вовсе.
- Единственная настоящая защита - форма входа внутри самого проекта. До неё внутри должны лежать только выдуманные данные.
- Проверка занимает минуту: открой ссылку в режиме инкогнито. Что видно там, то видно всем.
- Свой домен - вывеска, а не замок. Он делает адрес красивым и не добавляет ни грамма защиты.

## Что закрывает приватный репозиторий, а что нет?

**Главное**

Приватное хранилище закрывает только код: чужой человек не увидит файлы проекта, историю правок и содержимое настроек. Опубликованная из этого кода страница остаётся доступной всем, у кого есть адрес.

Разберём, где именно возникает путаница. Когда непрограммист выкладывает первый проект, он делает два действия подряд.

Первое: создаёт хранилище кода и ставит ему признак «приватное». Второе: подключает это хранилище к хостингу, и тот собирает из кода работающий сайт.

Из двух слов «приватный» и «выложил» в голове складывается ощущение, что проект закрыт с двух сторон. На деле закрыта одна: код.

Аналогия из офиса. Приватный репозиторий - это сейф с чертежами. Опубликованный сайт - это построенное по чертежам здание с открытой дверью. Чертежи никто не украдёт, а войти внутрь может любой, кто знает адрес.

На обучениях я вижу эту ошибку регулярно, и она опаснее всего у тех, кто работает с чужими документами: агентства, юристы, подрядчики. Человек кладёт в проект реальные файлы клиента, потому что уверен, что всё закрыто.

## Три уровня закрытости, которые путают между собой

**Главное**

Закрыт код, закрыт служебный адрес и закрыт вход в приложение - три разные вещи. Первые две даются настройками почти сразу, третья требует отдельной работы внутри проекта.

| Что закрываем | Чем закрывается | Что это даёт | Чего не даёт |
|---|---|---|---|
| Исходный код | приватное хранилище кода | никто не прочитает файлы и настройки | страница по-прежнему открыта |
| Черновые и служебные адреса | настройка защиты у хостинга | предпросмотры не индексируются и не открываются | основной адрес остаётся публичным |
| Вход в приложение | форма входа внутри проекта | видит только тот, у кого есть учётные данные | требует отдельной работы, обычно позже |
| Адрес, который никто не знает | ничем | ничего | это не защита вовсе |

Последняя строка - главная. Расчёт на то, что ссылку никто не угадает, в безопасности имеет отдельное название и репутацию плохой практики.

Про то, какие ещё слова путаются в этой области, я собрал отдельный [словарь вайбкодинга](/guides/slovar-vibecodinga-bez-zhargona).

## Почему «ссылку никто не знает» - это не защита?

**Главное**

Потому что адреса утекают без всякого взлома: их пересылают в переписке, они попадают в историю браузера, в аналитику, в закладки и в индекс поисковика через любую внешнюю ссылку. Один пересланный адрес снимает защиту навсегда.

Список способов, которыми открытый адрес перестаёт быть тайной, скучный и очень короткий:

- **Переслал коллеге.** Дальше он переслал ещё кому-то, и цепочку уже никто не контролирует.
- **Открыл на конференции с проектора.** Адрес видно в строке браузера.
- **Поставил ссылку где-нибудь снаружи.** Поисковый робот приходит по ссылке и добавляет страницу в индекс.
- **Расширения браузера и аналитика.** Адрес уезжает в чужие системы просто потому, что ты его открыл.

Ни один из этих сценариев не требует злого умысла. Именно поэтому в закрытом контуре компании расчёт на секретность адреса не считается защитой.

**Где это становится дорого**

Пока внутри проекта выдуманные данные, риск нулевой. Как только туда попадают реальные документы клиента, договоры или персональные данные людей, открытая ссылка превращается в утечку. Про то, где вообще проходит граница чувствительных данных, я писал в материале про [документы компании и нейросети](/guides/chuvstvitelnye-dannye-i-neyroseti-v-kompanii).

## Проверка в инкогнито за минуту

**Главное**

Единственный надёжный способ увидеть проект глазами постороннего - открыть его в приватном окне браузера. Твоя обычная вкладка помнит вход, куки и сессию, поэтому показывает больше, чем видит чужой человек.

1. **Скопируй основной адрес проекта**

   Именно тот, который ты дал бы коллеге. Не служебный предпросмотр и не локальный адрес на своём компьютере.

2. **Открой приватное окно браузера**

   В любом браузере это отдельный режим без истории и без входов. Обычная новая вкладка не подходит: она помнит, что ты вошёл.

3. **Вставь адрес и посмотри, что открылось**

   Если проект показал содержимое без запроса пароля, значит его видит любой человек с этим адресом.

4. **Проверь с телефона по мобильному интернету**

   Дополнительная проверка на случай, если доступ ограничен по сети офиса. Мобильный интернет имитирует постороннего лучше всего.

Мой рабочий приём: делаю эту проверку сразу после первой публикации и повторяю после каждой правки настроек доступа. Тридцать секунд, а отвечает на вопрос, на который иначе отвечаешь предположением.

## Что можно класть в проект до появления входа?

**Главное**

Только выдуманные данные. Вымышленные клиенты, суммы, тексты договоров и адреса. Всё, что взято из реальной работы, ждёт до момента, когда в проекте появится нормальный вход.

Правило простое и жёсткое, потому что нарушают его почти все. Хочется проверить инструмент на настоящем материале, ведь на выдуманном непонятно, работает ли он.

Компромисс, который я даю ученикам: бери реальную структуру, но выдуманное содержимое. Настоящие поля, настоящий формат, настоящий объём - и вымышленные имена, суммы и адреса.

Что это даёт:

1. **Проверка честная.** Инструмент видит те же поля и тот же объём, что в бою.
2. **Утечки нет.** Даже если ссылка уйдёт, уйдёт вымышленный список.
3. **Не нужно ничего согласовывать.** Ни с юристом, ни со службой безопасности.
4. **Переход в бой дешёвый.** Когда появится вход, ты просто заменишь содержимое.

Обезличивание тут не формальность, а работа: менять надо не только имена, но и всё, по чему человека или компанию можно узнать - названия проектов, суммы сделок, редкие сочетания дат и городов.

## Когда делать форму входа?

**Главное**

Тогда, когда в проекте появляются реальные данные или второй пользователь. До этого форма входа - лишняя работа, которая тормозит проверку идеи.

Порядок, который работает у непрограммиста:

- **Первая неделя.** Инструмент собирается на выдуманных данных. Никакого входа, никаких настроек доступа. Задача - понять, работает ли идея.
- **Момент, когда захотелось показать коллеге.** Показывай экраном на созвоне, а не ссылкой. Это ничего не стоит и ничего не открывает.
- **Момент, когда коллеге нужно пользоваться самому.** Вот здесь появляется вход. Не раньше.
- **Момент, когда внутрь ложатся настоящие данные.** Вход обязателен, а вместе с ним - разговор про то, где хранятся данные и кто за них отвечает.

**Как ставить задачу агенту на эту тему**

Формулируй так, чтобы он не додумывал: «проверь, есть ли у моего хостинга настройка закрытия основного адреса, и если такой настройки нет или ты не уверен - скажи прямо, не придумывай». Агент охотно описывает функции, которых у площадки нет, и это как раз тот случай, где выдумка стоит дорого.

Что делать дальше, когда рабочая версия готова и пора думать про хостинг, данные и закон, разбирал в материале про то, [что делать, когда прототип готов](/guides/prototip-gotov-chto-dalshe-deploy-152fz).

## Домен - вывеска, а не замок

**Главное**

Свой домен меняет только адрес в строке браузера. Он не добавляет защиты, не ограничивает доступ и не влияет на то, кто увидит содержимое.

Отдельная путаница, которую стоит развести. Купленный домен вызывает ощущение солидности и заодно ощущение защищённости. Второе неверно.

Домен решает три задачи: адрес легко продиктовать, он выглядит как принадлежащий компании, и его не отберут вместе со сменой хостинга. Всё.

Отсюда практический вывод про очерёдность. Домен покупают, когда инструмент уже работает и им пользуются. Покупать домен для проекта, который живёт третий день, - тратить деньги на вывеску над стройкой.

То же и с оформлением: дизайн и адрес не имеют отношения к тому, можно ли класть внутрь реальные данные. Про разницу между «выглядит готовым» и «работает как надо» я писал в материале про [приёмку работы агента](/guides/kak-proveryat-ai-kod-bez-teh-bekgraunda).

## Частые вопросы

**Главное**

Что спрашивают чаще всего: индексируется ли открытый проект поисковиками, спасает ли пароль на предпросмотрах, можно ли обойтись без входа для одного пользователя и что делать, если реальные данные уже залиты.

### Частые вопросы

**Мой проект попадёт в поисковую выдачу?**

Может, если на него где-то появится ссылка. Запрет индексации ставится отдельно и тоже не является защитой: он просит роботов не показывать страницу, но не закрывает доступ.

**Хостинг предлагает пароль на предпросмотрах. Этого хватит?**

Для черновых адресов да, для основного нет. Проверь в инкогнито: если основной адрес открылся без пароля, защиты у него нет.

**Инструментом пользуюсь только я. Вход нужен?**

Если внутри реальные данные - нужен, даже для одного человека. Ссылка на открытый проект живёт дольше, чем твой интерес к нему.

**Реальные данные уже залиты. Что делать?**

Убрать их из проекта, заменить на выдуманные и считать, что адрес скомпрометирован. Если там были персональные данные людей, дальше это вопрос не к разработке, а к ответственному за них в компании.

## Главный вывод

**Главное**

После первого деплоя проект защищён ровно одним: адрес знает только ты. Приватный репозиторий закрывает код, домен ничего не закрывает, а настоящая защита появляется вместе с формой входа. До неё внутри только выдуманные данные.

Ошибка тут не техническая, а смысловая: слово «приватный» относится к одной части конструкции, а человек распространяет его на всю.

Практический минимум на первую неделю выглядит так: приватное хранилище кода, выдуманные данные внутри, проверка в инкогнито после каждой публикации, показ коллегам экраном, а не ссылкой.

Про то, как из первого работающего прототипа вырастает то, чем реально пользуются, есть отдельный разбор [вайбкодинга в продакшене](/guides/vibecoding-v-prodakshene-realnye-proekty). А сам подход к сборке без кода - в [вайбкодинге](/concepts/vibecoding) как таковом.

Открой свой проект в инкогнито прямо сейчас. Что там увидит человек, которому ты никогда не давал доступа?

### Источники

- [Security through obscurity - обзорная статья о защите через неизвестность и её репутации, Википедия](https://en.wikipedia.org/wiki/Security_through_obscurity)
- [GitHub Docs - сведения о репозиториях и их видимости, русская версия](https://docs.github.com/ru/repositories/creating-and-managing-repositories/about-repositories)
- [Vercel - документация о защите развёртываний и о том, какие адреса она закрывает](https://vercel.com/docs/deployment-protection)
- [Basic access authentication - обзорная статья о простой форме проверки доступа, Википедия](https://en.wikipedia.org/wiki/Basic_access_authentication)
- [Федеральный закон «О персональных данных» от 27.07.2006 N 152-ФЗ, действующая редакция](https://www.consultant.ru/document/cons_doc_LAW_61801/)
