Autentikasi & Keamanan HMAC
Amankan URL gambar OG yang ditandatangani HMAC Anda dengan autentikasi HMAC-SHA256 dari FastOG. Panduan ini mencakup penandatanganan, validasi, dan pemecahan masalah untuk setiap permintaan, sehingga Anda dapat mengirimkan gambar Open Graph dinamis dengan cepat โ dibatasi oleh langganan, dengan render tanpa batas (tanpa kuota render bulanan dan tanpa tagihan berlebih). Daftar, pilih paket Dynamic API, lalu buat kunci API dan rahasia HMAC Anda di dasbor (render API berbayar bersih). Tandatangani di server Anda sekali dan integrasikan dalam hitungan menit.
๐ Mulai Cepat
Baru mengenal penandaan HMAC? Mulai dari sini:
- Panduan Mulai Cepat โ Siap digunakan dalam 5 menit
- Tutorial JavaScript โ Panduan lengkap untuk pengembang Node.js/Next.js
- Semua tutorial framework โ pilih tumpukan teknologi Anda:
๐ Indeks Dokumentasi
Konsep Inti
- Panduan Tanda Tangan HMAC โ Referensi lengkap dengan detail algoritma, persyaratan, dan contoh dalam JavaScript, PHP, dan Python
- Validasi HMAC โ Detail implementasi sisi server, fitur keamanan, dan respons kesalahan
Tutorial
-
Tutorial JavaScript/Node.js โ Panduan komprehensif yang mencakup:
- Memulai Cepat (5 menit)
- Next.js App Router (3 pola)
- Next.js Pages Router
- Backend Express.js
- Node.js Murni
- Pola Integrasi Frontend (SSG, SSR, Client-Side)
- Pengujian & Debugging
- Kesalahan Umum
Referensi Cepat
Algoritma
method = "GET"
path = "/api/v1/og"
canonicalQuery = every query param EXCEPT `s` (including `key`): array values sorted too; each pair rfc3986Encode(key)=rfc3986Encode(value); pairs sorted lexicographically and joined with "&"
message = method + path + "\n" + canonicalQuery
signature = hex(HMAC-SHA256(message, hmac_secret))
URL: /api/v1/og?title=Hello&key=sk_quick_123abc&s=<signature>
Parameter Kueri
| Parameter | Deskripsi | Contoh |
|---|---|---|
key |
Kunci API lengkap | sk_quick_123abc |
s |
Tanda tangan HMAC-SHA256 (64 karakter hex) | 9f8a1b2c3d4e... |
Kode Kesalahan
| Kode | Status HTTP | Deskripsi |
|---|---|---|
missing_signature |
401 | Parameter key atau s tidak ada |
invalid_signature |
401 | Tanda tangan tidak cocok |
๐ฏ Kasus Penggunaan
Postingan Blog
Hasilkan gambar OG dinamis untuk postingan blog:
const ogUrl = generateSignedOgUrl({
template: "blog",
title: post.title,
subtitle: post.excerpt,
author: post.author.name,
});
// <meta property="og:image" content="{ogUrl}" />
Produk E-commerce
Buat gambar OG untuk halaman produk:
const ogUrl = generateSignedOgUrl({
template: "ecommerce",
title: product.name,
price: product.price,
image: product.image,
});
Testimoni
Hasilkan gambar OG untuk kutipan testimoni:
const ogUrl = generateSignedOgUrl({
template: "testimonial",
author_name: user.name,
author_avatar: user.avatarUrl,
quote: user.bio,
});
๐ Keamanan
Praktik Terbaik
- Simpan rahasia dengan aman โ Gunakan variabel lingkungan (environment variables) atau pengelola rahasia (secrets manager)
- Jangan pernah mengekspos rahasia HMAC di kode sisi klien โ Tandatangani hanya di server
- Gunakan HTTPS โ Mencegah serangan MITM
- Rotasi rahasia secara berkala โ Terutama jika telah disusupi
- Pantau tanda tangan yang gagal โ Kegagalan berulang dapat mengindikasikan serangan
- Isolasi per pengguna โ Setiap kunci API memiliki rahasia HMAC sendiri
Mendapatkan Rahasia HMAC Anda
- Buka Dasbor โ Kunci API
- Buat kunci API baru
- Salin Rahasia HMAC (hanya ditampilkan sekali!)
- Simpan dalam variabel lingkungan
# .env
FASTOG_HMAC_SECRET=<your-64-char-hex-secret>
๐งช Pengujian
Membuat URL Pengujian
# Node.js
node -e "
const crypto = require('crypto');
const enc = (s) => encodeURIComponent(s).replace(/[!'()*]/g, (c) => '%' + c.charCodeAt(0).toString(16).toUpperCase());
const all = { title: 'Test', key: 'sk_quick_123abc' };
const pairs = [];
for (const [k, v] of Object.entries(all)) for (const vv of Array.isArray(v) ? v : [v]) pairs.push(enc(k) + '=' + enc(vv));
pairs.sort();
const canonical = pairs.join('&');
const sig = crypto.createHmac('sha256', 'YOUR_HMAC_SECRET').update('GET/api/v1/og\n' + canonical).digest('hex');
console.log('https://fastog.com/api/v1/og?title=Test&key=sk_quick_123abc&s=' + sig);
"
Menguji dengan curl
curl "https://fastog.com/api/v1/og?title=Test&key=sk_quick_123abc&s=<signature>"
Respons yang Diharapkan
- โ Tanda tangan valid โ Mengembalikan gambar OG (atau 422 jika parameter template tidak valid)
- โ Tanda tangan tidak valid โ
{"code": "invalid_signature"} - โ Parameter tidak ada โ
{"code": "missing_signature"}
๐ Pemecahan Masalah
Tanda tangan tidak cocok
- Pastikan Anda menggunakan rahasia HMAC yang benar (periksa kunci API di dasbor)
- Periksa kueri kanonis: setiap parameter kueri kecuali
s(termasukkey), nilai dienkode dengan rfc3986, kunci diurutkan secara leksikografis - Pastikan tanda tangan berupa heksadesimal huruf kecil (64 karakter)
๐ Sumber Daya Tambahan
- Referensi API โ Dokumentasi API lengkap
- Praktik Terbaik Keamanan โ Panduan keamanan terperinci
- Basis Pengetahuan โ Detail implementasi teknis
โ FAQ
T: Mengapa menggunakan parameter kueri, bukan header?
J: Gambar OG diambil oleh perayap jaringan sosial (LinkedIn, Twitter, Facebook) yang tidak mengirim header kustom. Tanda tangan HARUS berada di URL.
T: Bisakah saya menggunakan tanda tangan yang sama untuk beberapa permintaan?
J: Ya. Tanda tangan dihitung dari kueri yang tepat (tanpa s), sehingga URL yang ditandatangani tetap valid selama parameternya tidak berubah. Ubah parameter apa pun (termasuk key) dan Anda harus menandatangani ulang.
T: Apakah saya perlu menandatangani permintaan untuk semua template?
J: Ya. Semua permintaan ke /api/v1/og memerlukan tanda tangan HMAC.
T: Apa yang terjadi jika rahasia HMAC saya bocor?
J: Cabut kunci API di dasbor dan buat yang baru. Setiap kunci API memiliki rahasia HMAC sendiri.
T: Bisakah saya menonaktifkan validasi HMAC untuk layanan internal?
J: Hubungi dukungan untuk solusi kustom. Validasi HMAC wajib untuk semua endpoint API publik.
๐ Dukungan
Butuh bantuan?
- Lihat Tutorial JavaScript untuk contoh kode lengkap
- Tinjau Panduan Tanda Tangan HMAC untuk detail algoritma
- Hubungi dukungan di [email protected]
Terkait
- Dokumentasi โ Semua panduan dan referensi FastOG
- Penguji Gambar OG Gratis โ Pratinjau tanpa akun
- Panduan Memulai Cepat โ Mulai berjalan dalam 5 menit
- Panduan Tanda Tangan HMAC โ Detail algoritma
- Validasi HMAC โ Validasi sisi server