主題

簽署的 OG 圖片網址

簽署的 OG 圖片網址(signed OG image URL)是指其參數以 HMAC-SHA256 簽章保護的網址,因此只有您(以及持有您密鑰的程式碼)才能請求會計入每月配額的渲染。FastOG 會對內容進行簽署——相同的參數始終產生相同且已快取的網址——這既能保護您的配額,也能讓快取具有確定性。

為什麼要簽署 OG 圖片 URL

一個能從未經驗證的 URL 渲染任意文字的 OG 圖片端點,等於是一個任何人都能存取的免費渲染農場。在訂閱制的服務中,這代表任何人都可能耗盡你的額度。用只有你的後端知道的密鑰簽署每個 URL,可以在第一次(未快取)請求時就阻擋所有未授權的請求,而合法的快取 URL 則能繼續正常運作。

內容簽章(content signing)的運作方式

  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 會過期」 不會——它是內容簽署(content-signed),在你輪換密鑰之前都有效
「被竄改的 URL 會破壞快取」 不會——無效的 s 只會在快取未命中(miss)時回傳 401;已快取的圖片仍會正常回傳
「我需要時間戳記才能確保安全」 內容簽署就足以防止配額濫用;不需要時鐘

單一檔案 SDK

FastOG 針對每種語言提供單一簽署者檔案(零依賴),讓您永遠不必自行撰寫 HMAC。請從 SDK 頁面 下載,或直接從 CDN 取得 curl:

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

常見問題

簽署的 URL 會過期嗎?

預設不會——它們會一直有效,直到你輪換 API 金鑰的 HMAC 密鑰。這是內容簽署(content-signed),而非時間簽署(time-signed)。

其他人可以透過猜測 URL 來消耗我的配額嗎?

不行。他們需要你的 HMAC 密鑰才能產生有效的簽章;沒有簽章時,未快取的渲染會回傳 401 invalid_signature。

我可以在瀏覽器中簽署 URL 嗎?

不行。請在伺服器端(或邊緣函式中)簽署,這樣密鑰永遠不會傳送到用戶端。渲染後的圖片 URL 可以安全地放在你的公開 <head> 中。

免費試用 — 無需註冊

在幾秒內預覽和測試動態 OG 圖片。

開啟免費 OG 圖片測試器

A BeCaSimulations site