หัวข้อ

URL ของ OG Image ที่มีการลงนาม (Signed OG Image URLs)

URL ของ OG image ที่มีการลงนามคือ URL ที่พารามิเตอร์ถูกป้องกันด้วยลายเซ็น HMAC-SHA256 เพื่อให้เฉพาะคุณ (และโค้ดที่ถือ secret ของคุณ) เท่านั้นที่สามารถขอเรนเดอร์ซึ่งนับรวมกับโควต้ารายเดือนของคุณได้ FastOG ลงนามที่ เนื้อหา — พารามิเตอร์ที่เหมือนกันจะสร้าง URL ที่เหมือนกันและถูกแคชเสมอ — ซึ่งทั้งปกป้องโควต้าของคุณและทำให้การแคชเป็นไปอย่างกำหนดได้

เหตุผลที่ต้องเซ็น URL ของ OG image

เอนด์พอยต์ OG image ที่แสดงข้อความใดก็ได้จาก URL ที่ไม่ต้องยืนยันตัวตนเปรียบเสมือนฟาร์มเรนเดอร์ฟรีที่ใครก็เรียกใช้ได้ บนบริการแบบสมัครสมาชิก นั่นหมายความว่าใครก็สามารถเบิร์นเครดิตของคุณได้ การเซ็น URL แต่ละรายการด้วยความลับ (secret) ที่เฉพาะแบ็กเอนด์ของคุณรู้ จะบล็อกคำขอที่ไม่ได้รับอนุญาตทั้งหมดตั้งแต่การเรียกครั้งแรก (ที่ยังไม่มีแคช) ในขณะที่ URL ที่ถูกต้องและมีแคชแล้วยังคงทำงานได้ตามปกติ

วิธีการทำงานของการลงนามเนื้อหา

  1. คุณสร้างสตริงคำสั่งแบบมาตรฐาน (canonical query string): ทุกพารามิเตอร์ (ยกเว้นลายเซ็น) จะถูกจัดเรียงและเข้ารหัสตาม RFC-3986
  2. คุณคำนวณ HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical)
  3. คุณเพิ่มลายเซ็นเป็นพารามิเตอร์ s

ข้อความไม่มี timestamp ดังนั้น 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) ใช้ได้จนกว่าคุณจะหมุน secret
"URL ที่ถูกแก้จะทำลายแคช" ไม่ใช่ — s ที่ไม่ถูกต้องจะได้รับ 401 เฉพาะเมื่อแคช พลาด เท่านั้น ส่วนรูปที่ถูกแคชไว้แล้วยังแสดงผลได้ตามปกติ
"ฉันต้องใช้ timestamp เพื่อความปลอดภัย" การลงนามตามเนื้อหาเพียงพอที่จะป้องกันการใช้โควต้าเกินกำหนด ไม่จำเป็นต้องใช้ clock

SDK ไฟล์เดียว

FastOG จัดส่งไฟล์ signer ไฟล์เดียวต่อภาษา (ไม่มี dependencies) เพื่อให้คุณไม่ต้องเขียน HMAC เอง ดาวน์โหลดจาก หน้า SDK หรือ curl โดยตรงจาก CDN:

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

คำถามที่พบบ่อย

URL ที่ลงนามแล้วจะหมดอายุหรือไม่?

โดยค่าเริ่มต้นแล้วไม่หมดอายุ — URL จะยังคงใช้งานได้จนกว่าคุณจะหมุนเวียน HMAC secret ของคีย์ API ใหม่ โดยเป็นการลงนามตามเนื้อหา (content-signed) ไม่ใช่ตามเวลา (time-signed)

คนอื่นจะใช้โควตาของฉันโดยการเดา URL ได้หรือไม่?

ไม่ได้ พวกเขาจำเป็นต้องมี HMAC secret ของคุณเพื่อสร้างลายเซ็นที่ถูกต้อง หากไม่มี ลักษณะการเรนเดอร์ที่ไม่ได้แคชจะส่งคืน 401 invalid_signature

ฉันต้องลงนาม URL ในเบราว์เซอร์หรือไม่?

ไม่ ควรลงนามฝั่งเซิร์ฟเวอร์ (หรือใน edge function) ซึ่ง secret จะไม่ถูกส่งไปยังไคลเอนต์ URL ของรูปภาพที่เรนเดอร์แล้วปลอดภัยที่จะใส่ใน <head> สาธารณะของคุณ

ลองใช้ฟรี — ไม่ต้องสมัครสมาชิก

ดูตัวอย่างและทดสอบภาพ OG แบบไดนามิกได้ในไม่กี่วินาที

เปิดตัวทดสอบภาพ OG ฟรี

A BeCaSimulations site