Θέμα

Έλεγχος ταυτότητας HMAC & Ασφάλεια

Ασφαλίστε τις υπογεγραμμένες με HMAC διευθύνσεις URL εικόνων OG με τον έλεγχο ταυτότητας HMAC-SHA256 της FastOG. Αυτός ο οδηγός καλύπτει την υπογραφή, την επαλήθευση και την αντιμετώπιση προβλημάτων για κάθε αίτημα, ώστε να μπορείτε να δημοσιεύετε δυναμικές εικόνες Open Graph εν κινήσει — με περιορισμούς βάσει συνδρομής, με απεριόριστες αποδόσεις (χωρίς μηνιαίο όριο αποδόσεων και χωρίς χρεώσεις υπέρβασης). Εγγραφείτε, επιλέξτε ένα πρόγραμμα Dynamic API και, στη συνέχεια, δημιουργήστε το κλειδί API και το μυστικό HMAC στον πίνακα ελέγχου (οι αποδόσεις μέσω πληρωμένου API είναι καθαρές). Υπογράψτε στον διακομιστή σας μία φορά και ενσωματώστε το σε λίγα λεπτά.

🚀 Γρήγορη Εκκίνηση

Νέοι στην υπογραφή HMAC; Ξεκινήστε από εδώ:

  1. Οδηγός Γρήγορης Εκκίνησης — Ξεκινήστε σε 5 λεπτά
  2. Εκμάθηση JavaScript — Πλήρης οδηγός για προγραμματιστές Node.js/Next.js
  3. Όλα τα εκπαιδευτικά σεμινάρια για frameworks — επιλέξτε τη στοίβα σας:

📚 Ευρετήριο Τεκμηρίωσης

Βασικές Έννοιες

  • Οδηγός Υπογραφής HMAC — Πλήρης αναφορά με λεπτομέρειες αλγορίθμου, απαιτήσεις και παραδείγματα σε JavaScript, PHP και Python
  • Επικύρωση HMAC — Λεπτομέρειες υλοποίησης από την πλευρά του διακομιστή, χαρακτηριστικά ασφαλείας και αποκρίσεις σφαλμάτων

Οδηγοί

Γρήγορη Αναφορά

Αλγόριθμος

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 για αναρτήσεις ιστολογίου:

javascript
const ogUrl = generateSignedOgUrl({
    template: "blog",
    title: post.title,
    subtitle: post.excerpt,
    author: post.author.name,
});

// <meta property="og:image" content="{ogUrl}" />

Προϊόντα Ηλεκτρονικού Εμπορίου

Δημιουργήστε εικόνες OG για σελίδες προϊόντων:

javascript
const ogUrl = generateSignedOgUrl({
    template: "ecommerce",
    title: product.name,
    price: product.price,
    image: product.image,
});

Μαρτυρίες Πελατών

Δημιουργήστε εικόνες OG για αποσπάσματα μαρτυριών:

javascript
const ogUrl = generateSignedOgUrl({
    template: "testimonial",
    author_name: user.name,
    author_avatar: user.avatarUrl,
    quote: user.bio,
});

🔐 Ασφάλεια

Βέλτιστες Πρακτικές

  1. Αποθηκεύστε τα μυστικά με ασφάλεια — Χρησιμοποιήστε μεταβλητές περιβάλλοντος ή διαχειριστή μυστικών
  2. Ποτέ μην εκθέτετε το HMAC secret σε κώδικα από την πλευρά του πελάτη — Υπογράψτε μόνο στον διακομιστή
  3. Χρησιμοποιήστε HTTPS — Αποτρέπει επιθέσεις MITM
  4. Αλλάζετε τα μυστικά περιοδικά — Ειδικά αν έχουν παραβιαστεί
  5. Παρακολουθείτε τις αποτυχημένες υπογραφές — Οι επαναλαμβανόμενες αποτυχίες μπορεί να υποδηλώνουν επιθέσεις
  6. Απομόνωση ανά χρήστη — Κάθε κλειδί API έχει το δικό του HMAC secret

Λήψη του HMAC Secret σας

  1. Μεταβείτε στο Dashboard → API Keys
  2. Δημιουργήστε ένα νέο κλειδί API
  3. Αντιγράψτε το HMAC Secret (εμφανίζεται μόνο μία φορά!)
  4. Αποθηκεύστε το σε μεταβλητές περιβάλλοντος
bash
# .env
FASTOG_HMAC_SECRET=<your-64-char-hex-secret>

🧪 Δοκιμές

Δημιουργία URL Δοκιμής

bash
# 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

bash
curl "https://fastog.com/api/v1/og?title=Test&key=sk_quick_123abc&s=<signature>"

Αναμενόμενες Αποκρίσεις

  • ✅ Έγκυρη υπογραφή → Επιστρέφει εικόνα OG (ή 422 αν οι παράμετροι προτύπου είναι μη έγκυρες)
  • ❌ Μη έγκυρη υπογραφή → {"code": "invalid_signature"}
  • ❌ Λείπουν παράμετροι → {"code": "missing_signature"}

🛠 Αντιμετώπιση προβλημάτων

Η υπογραφή δεν ταιριάζει

  1. Βεβαιωθείτε ότι χρησιμοποιείτε το σωστό μυστικό HMAC (ελέγξτε το κλειδί API στον πίνακα ελέγχου)
  2. Ελέγξτε το κανονικό ερώτημα: κάθε παράμετρος ερωτήματος εκτός από το s (συμπεριλαμβανομένου του key), τιμές κωδικοποιημένες με rfc3986, κλειδιά ταξινομημένα λεξικογραφικά
  3. Βεβαιωθείτε ότι η υπογραφή είναι πεζός δεκαεξαδικός αριθμός (64 χαρακτήρες)

📖 Πρόσθετοι Πόροι

❓ Συχνές Ερωτήσεις

Ε: Γιατί παραμέτρους ερωτήματος αντί για επικεφαλίδες;
Α: Οι εικόνες OG ανακτώνται από τα προγράμματα ανίχνευσης κοινωνικών δικτύων (LinkedIn, Twitter, Facebook) που δεν στέλνουν προσαρμοσμένες επικεφαλίδες. Η υπογραφή ΠΡΕΠΕΙ να βρίσκεται στη διεύθυνση URL.

Ε: Μπορώ να χρησιμοποιήσω την ίδια υπογραφή για πολλαπλά αιτήματα;
Α: Ναι. Μια υπογραφή υπολογίζεται από το ακριβές ερώτημα (χωρίς το s), οπότε η ίδια υπογεγραμμένη διεύθυνση URL παραμένει έγκυρη όσο οι παράμετροι δεν αλλάζουν. Αλλάξτε οποιαδήποτε παράμετρο (συμπεριλαμβανομένου του key) και πρέπει να υπογράψετε ξανά.

Ε: Πρέπει να υπογράφω αιτήματα για όλα τα πρότυπα;
Α: Ναι. Όλα τα αιτήματα προς το /api/v1/og απαιτούν υπογραφές HMAC.

Ε: Τι συμβαίνει αν παραβιαστεί το μυστικό HMAC μου;
Α: Ανακαλέστε το κλειδί API στον πίνακα ελέγχου (dashboard) και δημιουργήστε ένα νέο. Κάθε κλειδί API έχει το δικό του μυστικό HMAC.

Ε: Μπορώ να απενεργοποιήσω την επαλήθευση HMAC για εσωτερικές υπηρεσίες;
Α: Επικοινωνήστε με την υποστήριξη για προσαρμοσμένες λύσεις. Η επαλήθευση HMAC είναι υποχρεωτική για όλα τα δημόσια τελικά σημεία API.

🆘 Υποστήριξη

Χρειάζεστε βοήθεια;

Δοκιμάστε το δωρεάν — δεν απαιτείται εγγραφή

Προεπισκόπηση και δοκιμή δυναμικών εικόνων OG σε δευτερόλεπτα.

Ανοίξτε τον Δωρεάν Ελεγκτή Εικόνων OG

A BeCaSimulations site