Python ile Webhook İmza Doğrulaması Nasıl Yapılır?

0 Yanıt 2 Görüntülenme
Puanlayanlar
Katılımcılar
Konuyu Açan #1
Webhook'lar, çeşitli servislerin olay bildirimlerini gerçek zamanlı olarak uygulamalarımıza iletmek için kullanılır. Ancak bu iletişimde güvenliği sağlamak, gelen verilerin gerçekten beklenen kaynaktan geldiğini doğrulamak kritik önem taşır. İşte bu noktada imza doğrulaması devreye girer. Python’da webhook imza doğrulaması yaparken temel olarak şu adımları takip edebiliriz:


İlk olarak, çoğu platform webhook ile gönderilen isteklere ek bir güvenlik katmanı olarak imza (signature) ekler. Bu imza, genellikle belirli bir algoritma ve gizli anahtar kullanılarak hesaplanır. Alıcı taraf ise, gelen isteğin imzasını, aynı algoritma ve gizli anahtar ile yeniden hesaplar ve karşılaştırır. Eğer iki imza eşleşiyorsa, isteğin güvenilir olduğuna hükmedilir.

Python’da bu işlemi yaparken, öncelikle gelen isteğin header’larından imzayı almanız gerekir. Örneğin, GitHub’un webhook’larında X-Hub-Signature-256 header’ı kullanılır. Sonrasında ise, gizli anahtar ve kullanılan algoritmayla yeni bir imza hesaplar ve karşılaştırırsınız. Bu noktada, hmac modülü ve hashlib kullanışlıdır.

Örneğin, şu kod parçası temel bir imza doğrulamasını gösterir:

KOD
1234567891011121314
import hmac
import hashlib

def verify_signature(request_body, signature_header, secret):
    # request_body: gelen isteğin gövdesi
    # signature_header: header'dan alınan imza değeri
    # secret: webhook gizli anahtarı

    hash_obj = hmac.new(secret.encode(), request_body, hashlib.sha256)
    calculated_signature = 'sha256=' + hash_obj.hexdigest()

    # Güvenli karşılaştırma
    return hmac.compare_digest(calculated_signature, signature_header)


Burada dikkat edilmesi gereken birkaç önemli nokta var:
  • hmac.compare_digest kullanımı, zaman tabanlı saldırıları önlemek adına güvenlidir.
  • request_body'nin orijinal, değiştirilmemiş haliyle alınması gerekir.
  • Gizli anahtarın güvenli bir şekilde saklanması ve paylaşılmaması şarttır.


Bu temel yapı, çoğu platformun imza doğrulama sürecine uygun olup, güvenliğinizi artırmak için mutlaka kullanılmalıdır. Ayrıca, platformların dökümantasyonlarında belirtilen algoritma ve header isimlerini kontrol etmek önemlidir.

Sonuç olarak, Python’da webhook imza doğrulaması, temel olarak HMAC ve güvenli karşılaştırma fonksiyonlarının doğru kullanımıyla sağlanır. Bu sayede, sadece gerçekten güvenilir kaynaklardan gelen verileri kabul ederek uygulamanızın güvenliğini önemli ölçüde artırabilirsiniz.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi