Что нельзя класть в браузерный код
Защитите runtime-токены, приватные значения и внутренние настройки от попадания в публичный frontend.
Браузерный код виден пользователю. Поэтому в него нельзя помещать runtime-токены, приватные ключи, внутренние настройки и значения, которые дают доступ к проекту.
Разделяйте три случая:
| Что нужно приложению | Где использовать |
|---|---|
| Публичный адрес API или название приложения | В браузере, если значение предназначено для всех пользователей. |
| Серверный runtime-токен или ключ интеграции | Только на backend, в worker, автоматизации или доверенном локальном скрипте. |
| Вход пользователя приложения | Через App Auth или ваш backend с проверкой сессии и прав. Серверный runtime-токен пользователю не передаётся. |
Когда использовать
- Вы пишете Web-приложение.
- Вы подключаете SDK или интеграцию.
- Вы решаете, где хранить приватные переменные.
Нельзя добавлять в браузерный код
- Runtime-токены и другие серверные credentials.
- Значения API-ключей и приватных переменных.
- Приватные значения интеграций.
- Приватные настройки окружения.
- Служебные файлы и внутренние конфигурации проекта.
Как сделать безопасно
- Оставляйте приватные значения на backend или в защищенных настройках runtime.
- Вызывайте Runtime SDK из backend, worker, автоматизации или доверенного локального скрипта.
- Для действий пользователя в браузере используйте App Auth или свой backend API.
- Не печатайте приватные значения в логах и не добавляйте их в скриншоты.
- Если приватное значение попало в публичный код, сразу замените его в источнике и обновите приложение.
Что дальше
Безопасная граница защищает проект: frontend получает только публичные настройки, а приватные действия выполняются на стороне backend или runtime.
Частые проблемы
| Проблема | Что сделать |
|---|---|
| Web-код требует приватное значение | Перенесите действие в backend API. |
| Ключ уже попал в код | Отзовите или замените ключ и перепубликуйте приложение. |
| Непонятно, публичная ли переменная | Считайте ее приватной, пока администратор проекта не подтвердит обратное. |