Έλεγχος ταυτότητας HMAC & Ασφάλεια
Ασφαλίστε τις υπογεγραμμένες με HMAC διευθύνσεις URL εικόνων OG με τον έλεγχο ταυτότητας HMAC-SHA256 της FastOG. Αυτός ο οδηγός καλύπτει την υπογραφή, την επαλήθευση και την αντιμετώπιση προβλημάτων για κάθε αίτημα, ώστε να μπορείτε να δημοσιεύετε δυναμικές εικόνες Open Graph εν κινήσει — με περιορισμούς βάσει συνδρομής, με απεριόριστες αποδόσεις (χωρίς μηνιαίο όριο αποδόσεων και χωρίς χρεώσεις υπέρβασης). Εγγραφείτε, επιλέξτε ένα πρόγραμμα Dynamic API και, στη συνέχεια, δημιουργήστε το κλειδί API και το μυστικό HMAC στον πίνακα ελέγχου (οι αποδόσεις μέσω πληρωμένου API είναι καθαρές). Υπογράψτε στον διακομιστή σας μία φορά και ενσωματώστε το σε λίγα λεπτά.
🚀 Γρήγορη Εκκίνηση
Νέοι στην υπογραφή HMAC; Ξεκινήστε από εδώ:
- Οδηγός Γρήγορης Εκκίνησης — Ξεκινήστε σε 5 λεπτά
- Εκμάθηση JavaScript — Πλήρης οδηγός για προγραμματιστές Node.js/Next.js
- Όλα τα εκπαιδευτικά σεμινάρια για frameworks — επιλέξτε τη στοίβα σας:
📚 Ευρετήριο Τεκμηρίωσης
Βασικές Έννοιες
- Οδηγός Υπογραφής HMAC — Πλήρης αναφορά με λεπτομέρειες αλγορίθμου, απαιτήσεις και παραδείγματα σε JavaScript, PHP και Python
- Επικύρωση HMAC — Λεπτομέρειες υλοποίησης από την πλευρά του διακομιστή, χαρακτηριστικά ασφαλείας και αποκρίσεις σφαλμάτων
Οδηγοί
-
Οδηγός JavaScript/Node.js — Περιεκτικός οδηγός που καλύπτει:
- Γρήγορη εκκίνηση (5 λεπτά)
- Next.js App Router (3 μοτίβα)
- Next.js Pages Router
- Express.js Backend
- Vanilla Node.js
- Μοτίβα ενσωμάτωσης Frontend (SSG, SSR, Client-Side)
- Δοκιμές και αποσφαλμάτωση
- Συχνά λάθη
Γρήγορη Αναφορά
Αλγόριθμος
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>
Παράμετροι Ερωτήματος
| Παράμετρος | Περιγραφή | Παράδειγμα |
|---|---|---|
key |
Πλήρες κλειδί API | sk_quick_123abc |
s |
Υπογραφή HMAC-SHA256 (64 δεκαεξαδικοί χαρακτήρες) | 9f8a1b2c3d4e... |
Κωδικοί Σφαλμάτων
| Κωδικός | Κατάσταση HTTP | Περιγραφή |
|---|---|---|
missing_signature |
401 | Λείπει η παράμετρος key ή s |
invalid_signature |
401 | Η υπογραφή δεν ταιριάζει |
🎯 Περιπτώσεις Χρήσης
Αναρτήσεις Ιστολογίου
Δημιουργήστε δυναμικές εικόνες OG για αναρτήσεις ιστολογίου:
const ogUrl = generateSignedOgUrl({
template: "blog",
title: post.title,
subtitle: post.excerpt,
author: post.author.name,
});
// <meta property="og:image" content="{ogUrl}" />
Προϊόντα Ηλεκτρονικού Εμπορίου
Δημιουργήστε εικόνες OG για σελίδες προϊόντων:
const ogUrl = generateSignedOgUrl({
template: "ecommerce",
title: product.name,
price: product.price,
image: product.image,
});
Μαρτυρίες Πελατών
Δημιουργήστε εικόνες OG για αποσπάσματα μαρτυριών:
const ogUrl = generateSignedOgUrl({
template: "testimonial",
author_name: user.name,
author_avatar: user.avatarUrl,
quote: user.bio,
});
🔐 Ασφάλεια
Βέλτιστες Πρακτικές
- Αποθηκεύστε τα μυστικά με ασφάλεια — Χρησιμοποιήστε μεταβλητές περιβάλλοντος ή διαχειριστή μυστικών
- Ποτέ μην εκθέτετε το HMAC secret σε κώδικα από την πλευρά του πελάτη — Υπογράψτε μόνο στον διακομιστή
- Χρησιμοποιήστε HTTPS — Αποτρέπει επιθέσεις MITM
- Αλλάζετε τα μυστικά περιοδικά — Ειδικά αν έχουν παραβιαστεί
- Παρακολουθείτε τις αποτυχημένες υπογραφές — Οι επαναλαμβανόμενες αποτυχίες μπορεί να υποδηλώνουν επιθέσεις
- Απομόνωση ανά χρήστη — Κάθε κλειδί API έχει το δικό του HMAC secret
Λήψη του HMAC Secret σας
- Μεταβείτε στο Dashboard → API Keys
- Δημιουργήστε ένα νέο κλειδί API
- Αντιγράψτε το HMAC Secret (εμφανίζεται μόνο μία φορά!)
- Αποθηκεύστε το σε μεταβλητές περιβάλλοντος
# .env
FASTOG_HMAC_SECRET=<your-64-char-hex-secret>
🧪 Δοκιμές
Δημιουργία URL Δοκιμής
# 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);
"
Δοκιμή με curl
curl "https://fastog.com/api/v1/og?title=Test&key=sk_quick_123abc&s=<signature>"
Αναμενόμενες Αποκρίσεις
- ✅ Έγκυρη υπογραφή → Επιστρέφει εικόνα OG (ή 422 αν οι παράμετροι προτύπου είναι μη έγκυρες)
- ❌ Μη έγκυρη υπογραφή →
{"code": "invalid_signature"} - ❌ Λείπουν παράμετροι →
{"code": "missing_signature"}
🛠 Αντιμετώπιση προβλημάτων
Η υπογραφή δεν ταιριάζει
- Βεβαιωθείτε ότι χρησιμοποιείτε το σωστό μυστικό HMAC (ελέγξτε το κλειδί API στον πίνακα ελέγχου)
- Ελέγξτε το κανονικό ερώτημα: κάθε παράμετρος ερωτήματος εκτός από το
s(συμπεριλαμβανομένου τουkey), τιμές κωδικοποιημένες με rfc3986, κλειδιά ταξινομημένα λεξικογραφικά - Βεβαιωθείτε ότι η υπογραφή είναι πεζός δεκαεξαδικός αριθμός (64 χαρακτήρες)
📖 Πρόσθετοι Πόροι
- Αναφορά API — Πλήρης τεκμηρίωση του API
- Βέλτιστες Πρακτικές Ασφάλειας — Αναλυτικός οδηγός ασφάλειας
- Βάση Γνώσεων — Τεχνικές λεπτομέρειες υλοποίησης
❓ Συχνές Ερωτήσεις
Ε: Γιατί παραμέτρους ερωτήματος αντί για επικεφαλίδες;
Α: Οι εικόνες OG ανακτώνται από τα προγράμματα ανίχνευσης κοινωνικών δικτύων (LinkedIn, Twitter, Facebook) που δεν στέλνουν προσαρμοσμένες επικεφαλίδες. Η υπογραφή ΠΡΕΠΕΙ να βρίσκεται στη διεύθυνση URL.
Ε: Μπορώ να χρησιμοποιήσω την ίδια υπογραφή για πολλαπλά αιτήματα;
Α: Ναι. Μια υπογραφή υπολογίζεται από το ακριβές ερώτημα (χωρίς το s), οπότε η ίδια υπογεγραμμένη διεύθυνση URL παραμένει έγκυρη όσο οι παράμετροι δεν αλλάζουν. Αλλάξτε οποιαδήποτε παράμετρο (συμπεριλαμβανομένου του key) και πρέπει να υπογράψετε ξανά.
Ε: Πρέπει να υπογράφω αιτήματα για όλα τα πρότυπα;
Α: Ναι. Όλα τα αιτήματα προς το /api/v1/og απαιτούν υπογραφές HMAC.
Ε: Τι συμβαίνει αν παραβιαστεί το μυστικό HMAC μου;
Α: Ανακαλέστε το κλειδί API στον πίνακα ελέγχου (dashboard) και δημιουργήστε ένα νέο. Κάθε κλειδί API έχει το δικό του μυστικό HMAC.
Ε: Μπορώ να απενεργοποιήσω την επαλήθευση HMAC για εσωτερικές υπηρεσίες;
Α: Επικοινωνήστε με την υποστήριξη για προσαρμοσμένες λύσεις. Η επαλήθευση HMAC είναι υποχρεωτική για όλα τα δημόσια τελικά σημεία API.
🆘 Υποστήριξη
Χρειάζεστε βοήθεια;
- Δείτε το JavaScript Tutorial για πλήρη παραδείγματα κώδικα
- Ανατρέξτε στον Οδηγό Υπογραφής HMAC για λεπτομέρειες του αλγορίθμου
- Επικοινωνήστε με την υποστήριξη στο [email protected]
Σχετικά
- Τεκμηρίωση — Όλοι οι οδηγοί και οι αναφορές του FastOG
- Δωρεάν Ελεγκτής Εικόνας OG — Προεπισκόπηση χωρίς λογαριασμό
- Οδηγός Γρήγορης Εκκίνησης — Ξεκινήστε σε 5 λεπτά
- Οδηγός Υπογραφής HMAC — Λεπτομέρειες αλγορίθμου
- Επικύρωση HMAC — Επικύρωση από την πλευρά του διακομιστή