К содержанию

Надёжность

Безопасность API-ключей и URL

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

Храните API-ключ как секрет

Храните ключ в менеджере секретов или переменной окружения и передавайте только в заголовке X-API-Key.

Не добавляйте ключ в URL, строку запроса, JSON-тело, сборку клиентского приложения или журналы. Правила передачи ключа описаны на странице «Аутентификация».

Предпочитайте POST для чувствительных URL

GET /take помещает целевой url в адрес запроса. Его могут записать браузер, прокси, шлюз, аналитика, трассировка или журнал доступа. Используйте POST /take, если целевой URL содержит токен, подписанный параметр, идентификатор или другое чувствительное значение.

Тело POST тоже может попасть в журнал при неверной настройке инфраструктуры. Отключите запись тел запросов для этих маршрутов.

Какие адреса отклоняет Shotly

Shotly принимает только HTTP и HTTPS на портах 80 и 443.

Shotly проверяет исходный URL, переходы и сетевые запросы страницы. Запросы к локальным, частным и служебным адресам блокируются. Если страница пытается загрузить такой ресурс, задача завершается ошибкой без раскрытия внутреннего адреса.

Эти ограничения снижают риск обращения к внутренним сетям, но не заменяют вашу собственную проверку URL и политику доступа. Правила входного поля собраны на странице «Параметры скриншота».

Сетевые функции страницы

WebSocket-соединения и Service Workers блокируются. Страницы, которые зависят от них, могут отобразиться не полностью или завершиться ошибкой.

Защищайте ссылки на результат

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

Не добавляйте API-ключ к ссылке на результат.

Журналы и метрики

  • скрывайте значение X-API-Key;
  • не записывайте целевые URL с секретными параметрами и полную строку GET /take;
  • не записывайте бинарное тело ответа;
  • не используйте API-ключ, URL, taskId или Idempotency-Key как метки метрик.

Не встраивайте ключ в клиентское приложение

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

Если ключ раскрыт

  1. Отзовите ключ в кабинете.
  2. Создайте новый ключ.
  3. Замените его в секретах или конфигурации.
  4. Проверьте журналы и сборки, куда мог попасть старый ключ.