Підписані URL-адреси OG-зображень
Підписана URL-адреса OG-зображення — це URL, параметри якої захищені підписом HMAC-SHA256, тому лише ви (та код, що зберігає ваш секрет) можете надсилати запити на рендеринг, які враховуються у вашій місячній квоті. FastOG підписує вміст — однакові параметри завжди створюють однакову, кешовану URL-адресу — що водночас захищає вашу квоту та робить кешування детермінованим.
Навіщо підписувати URL-адреси OG-зображень
Кінцева точка OG-зображення, яка рендерить довільний текст із неавтентифікованої URL-адреси, — це безкоштовна рендер-ферма, до якої може звертатися будь-хто. У сервісі з підпискою це означає, що будь-хто може витратити ваш баланс. Підписання кожного URL-адреси секретним ключем, відомим лише вашому бекенду, блокує всі несанкціоновані запити під час першого (некешованого) отримання, тоді як легітимні кешовані URL-адреси продовжують працювати.
Як працює підписання вмісту
- Ви формуєте канонічний рядок запиту: кожен параметр (окрім підпису), відсортований і закодований за RFC-3986.
- Ви обчислюєте
HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical). - Ви додаєте підпис як параметр
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:
curl -O https://fastog.com/sdk/node.js
FAQ
Чи закінчується термін дії підписаних URL-адрес?
За замовчуванням — ні. Вони залишаються дійсними, доки ви не обернете HMAC-секрет ключа API. Підписання стосується вмісту, а не часу.
Чи може хтось інший витратити мою квоту, вгадавши URL-адресу?
Ні. Для формування дійсного підпису їм потрібен ваш HMAC-секрет; без нього некетовані рендери повертають 401 invalid_signature.
Чи підписую я URL-адресу в браузері?
Ні. Підписуйте на стороні сервера (або у крайовій функції), де секрет ніколи не передається клієнту. URL-адресу згенерованого зображення можна безпечно розміщувати у вашому публічному <head>.