Fri Jan 09 2026
...
Ενημέρωση Ασφαλείας Webhook
Τι Νέο
Προηγουμένως, υπήρχε περισσότερη δυσκολία στη ρύθμιση των Webhooks σε σύγκριση με άλλες πλατφόρμες. Θεωρήσαμε αυτό καλό λόγω των επιπλέον μέτρων ασφαλείας που απαιτούνταν, ωστόσο πρόσφατα καταλήξαμε σε έναν μηχανισμό που είναι εξίσου ασφαλής αλλά αυτή η ασφάλεια είναι προαιρετική.
Προηγούμενη Συμπεριφορά
Προηγουμένως, το σύστημα περνούσε το API key σας στα payloads και αναμέναμε να το επικυρώσετε. Εάν δεν επιστρέψατε ένα 401 για ένα μη έγκυρο api key, το σύστημα δεν θα επέτρεπε τη ρύθμιση.
Νέα Συμπεριφορά
Τώρα, το σύστημα δεν θα περνά ένα API key για νέες ρυθμίσεις webhook. Αντίθετα, για νέες και υπάρχουσες ενσωματώσεις περιλαμβάνεται μια υπογεγραμμένη υπογραφή HMAC. Ίσως θελήσετε ή όχι να επικυρώσετε αυτή την υπογραφή, ανάλογα με το επίπεδο ασφαλείας που απαιτείται.
Οι υπάρχουσες ρυθμίσεις θα συνεχίσουν να περνούν το API key - μπορείτε τώρα να ζητήσετε να το απενεργοποιήσετε μέσω ενός εισιτηρίου υποστήριξης.
Επικύρωση Υπογραφής HMAC
Το FastComments στέλνει πλέον τα ακόλουθα headers με κάθε αίτημα webhook:
| Header | Περιγραφή |
|---|---|
X-FastComments-Timestamp |
Unix timestamp (δευτερόλεπτα) όταν υπογράφηκε το αίτημα |
X-FastComments-Signature |
Υπογραφή HMAC-SHA256 στη μορφή sha256=<hex> |
token |
Το API Secret σας (διατηρείται για συμβατότητα) |
Πώς Υπολογίζεται η Υπογραφή
- Συγκεντρώστε:
timestamp + "." + JSON_payload_body - Υπολογίστε HMAC-SHA256 χρησιμοποιώντας το API Secret σας ως κλειδί
- Κωδικοποιήστε το αποτέλεσμα σε hex
Παράδειγμα Επικύρωσης (Python)
import hmac
import hashlib
import time
import json
def verify_webhook_signature(headers, body, api_secret):
timestamp = headers.get('X-FastComments-Timestamp')
signature = headers.get('X-FastComments-Signature')
if not timestamp or not signature:
return False
# Επικύρωση ότι το timestamp είναι πρόσφατο
now = int(time.time())
if abs(now - int(timestamp)) > 300:
return False
# Επικύρωση υπογραφής
payload = json.dumps(body, separators=(',', ':'))
message = f"{timestamp}.{payload}"
expected = hmac.new(
api_secret.encode(),
message.encode(),
hashlib.sha256
).hexdigest()
return signature == f"sha256={expected}"
Επιλογή Μεθόδου HTTP
Επιπλέον, με αυτή την ενημέρωση - μπορείτε τώρα να ρυθμίσετε τη μέθοδο HTTP για κάθε τύπο γεγονότος webhook:
- Δημιουργία Γεγονότος: POST ή PUT (προεπιλογή: PUT)
- Ενημέρωση Γεγονότος: POST ή PUT (προεπιλογή: PUT)
- Διαγραφή Γεγονότος: DELETE, POST ή PUT (προεπιλογή: DELETE)
Οφέλη Ασφαλείας
Το νέο σύστημα έχει μερικά οφέλη:
- Προστασία από επιθέσεις man-in-the-middle
- Πρόληψη επαναλαμβανόμενων επιθέσεων μέσω επικύρωσης timestamp
- Ανίχνευση αλλοίωσης payload
Συμβατότητα με Παλιές Εκδόσεις
Η επικεφαλίδα token, που περιέχει το API Secret σας, στέλνεται ακόμα με κάθε αίτημα. Οι υπάρχουσες ενσωματώσεις θα συνεχίσουν να λειτουργούν χωρίς τροποποίηση, και όπως
αναφέρθηκε προηγουμένως, μπορείτε να ζητήσετε να απενεργοποιήσετε τη παλιά συμπεριφορά μέσω υποστήριξης.
Τεκμηρίωση
Για πλήρη τεκμηρίωση, ανατρέξτε στον Οδηγό Webhooks.
Στην Κατακλείδα
Όπως συμβαίνει με όλες τις μεγάλες εκδόσεις, είμαστε χαρούμενοι που μπορέσαμε να αφιερώσουμε χρόνο για να βελτιστοποιήσουμε, να δοκιμάσουμε και να απελευθερώσουμε σωστά αυτές τις αλλαγές. Ενημερώστε μας παρακάτω αν ανακαλύψετε οποιαδήποτε θέματα.
Καλή συνέχεια!
