Надёжность
Безопасность 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 напрямую из браузерного кода или мобильного приложения: встроенный ключ можно извлечь. Отправляйте запрос через доверенную серверную часть, которая хранит ключ и проверяет действия пользователя.
Если ключ раскрыт
- Отзовите ключ в кабинете.
- Создайте новый ключ.
- Замените его в секретах или конфигурации.
- Проверьте журналы и сборки, куда мог попасть старый ключ.