FastComments.com Blog

Fri Jan 09 2026
...

Ενημέρωση Ασφάλειας Webhook

Τι Νέο

Προηγουμένως, υπήρχε επιπλέον friction στην εγκατάσταση των Webhooks σε σύγκριση με άλλες πλατφόρμες. Το θεωρούσαμε καλό λόγω των επιπλέον μέτρων ασφαλείας που απαιτούνταν, ωστόσο πρόσφατα καταλήξαμε σε έναν μηχανισμό που είναι εξίσου ασφαλής αλλά αυτή η ασφάλεια είναι opt-in.

Προηγούμενη Συμπεριφορά

Προηγουμένως, το σύστημα περνούσε το API key σας στα payload και αναμέναμε να το επαληθεύσετε. Εάν δεν επιστρέφατε 401 για ένα άκυρο api key, το σύστημα δεν επέτρεπε την εγκατάσταση.

Νέα Συμπεριφορά

Τώρα, το σύστημα δεν θα περάσει ένα API key για νέες ρυθμίσεις webhook. Αντίθετα, για νέες και υπάρχουσες ενσωματώσεις συμπεριλαμβάνεται μια υπογεγραμμένη υπογραφή HMAC. Μπορείτε, ή δεν μπορείτε, να θελήσετε να επαληθεύσετε αυτή την υπογραφή, ανάλογα με το επίπεδο ασφάλειας που απαιτείται.

Οι υπάρχουσες ρυθμίσεις θα συνεχίσουν να περνάνε το API key - μπορείτε τώρα να ζητήσετε να το απενεργοποιήσετε μέσω ενός support ticket.

Επαλήθευση Υπογραφής HMAC

Το FastComments στέλνει τώρα τις παρακάτω κεφαλίδες με κάθε αίτημα webhook:

Κεφαλίδα Περιγραφή
X-FastComments-Timestamp Unix timestamp (δευτερόλεπτα) όταν υπογράφτηκε το αίτημα
X-FastComments-Signature Υπογραφή HMAC-SHA256 σε μορφή sha256=<hex>
token Το API Secret σας (διατηρείται για λόγους συμβατότητας)

Πώς Υπολογίζεται η Υπογραφή

  1. Συνδυάστε: timestamp + "." + JSON_payload_body
  2. Υπολογίστε HMAC-SHA256 χρησιμοποιώντας το API Secret σας ως το κλειδί
  3. 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.

Σε Συμπέρασμα

Όπως και με όλες τις μεγάλες εκδόσεις, είμαστε χαρούμενοι που είχαμε την ευκαιρία να βελτιστοποιήσουμε, να δοκιμάσουμε και να απελευθερώσουμε αυτές τις αλλαγές σωστά. Ενημερώστε μας παρακάτω αν ανακαλύψετε οποιαδήποτε προβλήματα.

Ευχαριστούμε!