Тема

Підписані URL-адреси OG-зображень

Підписана URL-адреса OG-зображення — це URL, параметри якої захищені підписом HMAC-SHA256, тому лише ви (та код, що зберігає ваш секрет) можете надсилати запити на рендеринг, які враховуються у вашій місячній квоті. FastOG підписує вміст — однакові параметри завжди створюють однакову, кешовану URL-адресу — що водночас захищає вашу квоту та робить кешування детермінованим.

Навіщо підписувати URL-адреси OG-зображень

Кінцева точка OG-зображення, яка рендерить довільний текст із неавтентифікованої URL-адреси, — це безкоштовна рендер-ферма, до якої може звертатися будь-хто. У сервісі з підпискою це означає, що будь-хто може витратити ваш баланс. Підписання кожного URL-адреси секретним ключем, відомим лише вашому бекенду, блокує всі несанкціоновані запити під час першого (некешованого) отримання, тоді як легітимні кешовані URL-адреси продовжують працювати.

Як працює підписання вмісту

  1. Ви формуєте канонічний рядок запиту: кожен параметр (окрім підпису), відсортований і закодований за RFC-3986.
  2. Ви обчислюєте HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical).
  3. Ви додаєте підпис як параметр s.

Повідомлення не містить часової мітки, тому URL-адреса є стабільною: ті самі параметри → та сама URL-адреса → той самий запис у кеші.

canonical = "key=sk_...&template=default&title=Hello"
signature = HMAC-SHA256(secret, "GET/api/v1/og\n" + canonical)
url = ".../api/v1/og?key=...&template=default&title=Hello&s=" + signature

Компроміс, який часто розуміють неправильно

Побоювання Реальність
«Підписаний URL закінчиться терміном дії» Ні — він підписаний за вмістом і дійсний, доки ви не обернете секрет
«Змінений URL порушує кеш» Ні — підроблений s отримує лише 401 при промаху кешу; закешовані зображення все одно повертаються
«Для безпеки потрібні мітки часу» Підписання вмісту достатньо, щоб зупинити зловживання квотою; годинник не потрібен

Одн файлові SDK

FastOG постачає один файл підписувача (signer) для кожної мови (без залежностей), тож вам не доведеться вручну реалізовувати HMAC. Завантажте зі сторінки SDK або curl безпосередньо з CDN:

bash
curl -O https://fastog.com/sdk/node.js

FAQ

Чи закінчується термін дії підписаних URL-адрес?

За замовчуванням — ні. Вони залишаються дійсними, доки ви не обернете HMAC-секрет ключа API. Підписання стосується вмісту, а не часу.

Чи може хтось інший витратити мою квоту, вгадавши URL-адресу?

Ні. Для формування дійсного підпису їм потрібен ваш HMAC-секрет; без нього некетовані рендери повертають 401 invalid_signature.

Чи підписую я URL-адресу в браузері?

Ні. Підписуйте на стороні сервера (або у крайовій функції), де секрет ніколи не передається клієнту. URL-адресу згенерованого зображення можна безпечно розміщувати у вашому публічному <head>.

Спробуйте безкоштовно — реєстрація не потрібна

Переглядайте та тестуйте динамічні OG-зображення за лічені секунди.

Відкрити безкоштовний тестер OG-зображень

A BeCaSimulations site