Fri Jan 09 2026
...
Webhook Güvenlik Güncellemesi
Yenilikler
Önceden, Webhook'ların kurulumu diğer platformlara göre daha fazla zorluk çıkarıyordu. Bunu, ek güvenlik önlemleri gerektirdiği için iyi bir şey olarak düşünüyorduk, ancak son zamanlarda tamamen güvenli ancak isteğe bağlı bir mekanizma üzerinde karar verdik.
Önceki Davranış
Önceden, sistem API anahtarınızı yüklerde geçiriyor ve bunu doğrulamanızı bekliyordu. Geçersiz bir API anahtarı için 401 döndürmezseniz, sistem kuruluma izin vermiyordu.
Yeni Davranış
Artık sistem, yeni webhook yapılandırmaları için bir API anahtarı geçmeyecek. Bunun yerine, yeni ve mevcut entegrasyonlar için imzalı bir HMAC imzası dahil edilecektir. Gerekli güvenlik düzeyine bağlı olarak bu imzayı doğrulamak isteyip istemediğinize karar verebilirsiniz.
Mevcut yapılandırmalar API anahtarını geçirmeye devam edecektir - artık bunu kapatmak için bir destek talebinde bulunabilirsiniz.
HMAC İmza Doğrulaması
FastComments, artık her webhook isteği ile aşağıdaki başlıkları göndermektedir:
| Başlık | Açıklama |
|---|---|
X-FastComments-Timestamp |
İsteğin imzalandığı anın Unix zaman damgası (saniye) |
X-FastComments-Signature |
sha256=<hex> formatında HMAC-SHA256 imzası |
token |
API Gizli Anahtarınız (geriye dönük uyumluluk için saklanmıştır) |
İmzanın Hesaplanma Şekli
- Birleştir:
timestamp + "." + JSON_payload_body - Anahtar olarak API Gizli Anahtarınızı kullanarak HMAC-SHA256 hesaplayın
- Sonucu hex olarak kodlayın
Örnek Doğrulama (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
# Zaman damgasının güncel olduğunu doğrulayın
now = int(time.time())
if abs(now - int(timestamp)) > 300:
return False
# İmza doğrulaması
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 Yöntemi Seçimi
Ayrıca, bu güncellemeyle birlikte - artık her webhook olay türü için HTTP yöntemini yapılandırabilirsiniz:
- Oluşturma Olayı: POST veya PUT (varsayılan: PUT)
- Güncelleme Olayı: POST veya PUT (varsayılan: PUT)
- Silme Olayı: DELETE, POST veya PUT (varsayılan: DELETE)
Güvenlik Avantajları
Yeni sistemin birkaç avantajı vardır:
- Adam ortada saldırılara karşı koruma
- Zaman damgası doğrulaması ile tekrar saldırılarını önleme
- Yük manipülasyonu tespiti
Geriye Dönük Uyumluluk
API Gizli Anahtarınızı içeren token başlığı, her istekte gönderilmeye devam etmektedir. Mevcut entegrasyonlar değişiklik olmadan çalışmaya devam edecek ve daha önce belirtildiği gibi eski davranışı kapatmak için destek talebinde bulunabilirsiniz.
Belgeler
Tam belgeler için Webhook Kılavuzumuza bakın.
Sonuç Olarak
Tüm büyük sürümlerde olduğu gibi, bu değişiklikleri optimize etmek, test etmek ve düzgün bir şekilde yayınlamak için zaman ayırabildiğimiz için mutluyuz. Aşağıda herhangi bir sorun keşfettiyseniz bize bildirin.
Şerefe!
