주제

서명된 OG 이미지 URL

서명된 OG 이미지 URL은 HMAC-SHA256 서명으로 매개변수가 보호되는 URL로, 오직 당신(또는 비밀 키를 보유한 코드)만 월 할당량에 반영되는 렌더링을 요청할 수 있습니다. FastOG는 콘텐츠에 서명하므로, 동일한 매개변수는 항상 동일하고 캐시된 URL을 생성합니다. 이는 할당량을 보호하고 캐싱을 결정론적으로 만듭니다.

OG 이미지 URL에 서명해야 하는 이유

인증 없이 접근 가능한 URL에서 임의의 텍스트를 렌더링하는 OG 이미지 엔드포인트는 누구나 사용할 수 있는 무료 렌더링 파밍 리소스입니다. 구독 기반 서비스에서는 누구나 귀하의 잔액을 소진할 수 있습니다. 백엔드만 알고 있는 비밀 키를 사용하여 각 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는 각 언어별로 단일 서명자 파일을 제공하여(의존성 제로) HMAC을 직접 구현할 필요가 없습니다. SDK 페이지에서 다운로드하거나 CDN에서 curl를 직접 가져오세요:

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

자주 묻는 질문

서명된 URL은 만료되나요?

기본적으로 만료되지 않습니다. API 키의 HMAC 시크릿을 교체할 때까지 유효합니다. 시간 기반 서명이 아닌 콘텐츠 기반 서명입니다.

다른 사람이 URL을 추측하여 제 할당량을 사용할 수 있나요?

아니요. 유효한 서명을 생성하려면 HMAC 시크릿이 필요합니다. 시크릿이 없으면 캐시되지 않은 렌더링은 401 invalid_signature을 반환합니다.

브라우저에서 URL에 서명하나요?

아니요. 시크릿이 클라이언트에 전달되지 않는 서버 사이드(또는 엣지 함수)에서 서명해야 합니다. 렌더링된 이미지 URL은 공개 <head>에 안전하게 포함할 수 있습니다.

무료로 체험해 보세요 — 가입 불필요

몇 초 만에 동적 OG 이미지를 미리 보고 테스트하세요.

무료 OG 이미지 테스터 열기

A BeCaSimulations site