Υπογεγραμμένα URL Εικόνων OG
Ένα υπογεγραμμένο URL εικόνας OG είναι ένα URL του οποίου οι παράμετροι προστατεύονται με υπογραφή HMAC-SHA256, έτσι ώστε μόνο εσείς (και ο κώδικας που κατέχει το μυστικό σας) να μπορείτε να ζητήσετε αποδόσεις που υπολογίζονται στο μηνιαίο όριό σας. Το FastOG υπογράφει το περιεχόμενο — οι ίδιες παράμετροι παράγουν πάντα το ίδιο, αποθηκευμένο στην κρυφή μνήμη URL — το οποίο προστατεύει το όριό σας και καθιστά την προσωρινή αποθήκευση ντετερμινιστική.
Γιατί να υπογράφετε τα URL των εικόνων OG
Ένα τελικό σημείο εικόνας OG που αποδίδει αυθαίρετο κείμενο από ένα URL χωρίς έλεγχο ταυτότητας είναι ένα δωρεάν «αγρόκτημα απόδοσης» (render farm) που μπορεί να χτυπήσει οποιοσδήποτε. Σε μια υπηρεσία με συνδρομή, αυτό σημαίνει ότι οποιοσδήποτε θα μπορούσε να εξαντλήσει το υπόλοιπό σας. Η υπογραφή κάθε URL με ένα μυστικό που γνωρίζει μόνο το backend σας αποκλείει κάθε μη εξουσιοδοτημένο αίτημα στο πρώτο (μη αποθηκευμένο στην κρυφή μνήμη) fetch, ενώ τα νόμιμα, αποθηκευμένα στην κρυφή μνήμη URL συνεχίζουν να λειτουργούν.
Πώς λειτουργεί η υπογραφή περιεχομένου
- Κατασκευάζετε το κανονικό query string: κάθε παράμετρος (εκτός από την υπογραφή), ταξινομημένη και κωδικοποιημένη σύμφωνα με το RFC-3986.
- Υπολογίζετε το
HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical). - Προσαρτάτε την υπογραφή ως την παράμετρο
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 θα λήξει» | Όχι — είναι υπογεγραμμένη ως προς το περιεχόμενο και ισχύει έως ότου αλλάξετε το μυστικό κλειδί |
| «Μια παραποιημένη διεύθυνση URL χαλάει την προσωρινή μνήμη» | Όχι — μια πλαστή s λαμβάνει απλώς σφάλμα 401 σε αστοχία της προσωρινής μνήμης· οι αποθηκευμένες εικόνες επιστρέφονται ούτως ή άλλως |
| «Χρειάζομαι χρονικές σημάνσεις για την ασφάλεια» | Η υπογραφή περιεχομένου αρκεί για να σταματήσει η κατάχρηση ποσοστώσεων· δεν χρειάζεται ρολόι |
SDK μονού αρχείου
Το FastOG παρέχει ένα μόνο αρχείο signer ανά γλώσσα (μηδενικές εξαρτήσεις), ώστε να μην χρειάζεται ποτέ να υλοποιήσετε HMAC χειροκίνητα. Μπορείτε να το κατεβάσετε από τη σελίδα SDK ή να το φορτώσετε curl απευθείας από το CDN:
curl -O https://fastog.com/sdk/node.js
Συχνές Ερωτήσεις
Λήγουν ποτέ οι υπογεγραμμένες διευθύνσεις URL;
Όχι από προεπιλογή — παραμένουν έγκυρες έως ότου περιστρέψετε το μυστικό HMAC του κλειδιού API. Είναι υπογεγραμμένες ως προς το περιεχόμενο, όχι ως προς τον χρόνο.
Μπορεί κάποιος άλλος να ξοδέψει το όριο χρήσης μου μαντεύοντας μια διεύθυνση URL;
Όχι. Χρειάζεται το μυστικό HMAC για να σχηματίσει έγκυρη υπογραφή· χωρίς αυτό, οι μη αποθηκευμένες αποδόσεις επιστρέφουν 401 invalid_signature.
Υπογράφω τη διεύθυνση URL στο πρόγραμμα περιήγησης;
Όχι. Υπογράψτε την από την πλευρά του διακομιστή (ή σε μια συνάρτηση άκρου) όπου το μυστικό δεν αποστέλλεται ποτέ στον πελάτη. Η διεύθυνση URL της αποδοθείσας εικόνας είναι ασφαλές να τοποθετηθεί στο δημόσιο <head> σας.