PayoutWebhookAuth, dış ödeme servislerinden gelen bildirimlerin (webhooks) güvenilirliğini doğrulamak için kullanılan uzmanlaşmış bir güvenlik katmanıdır.
🔒 Ödeme Webhook Kimlik Doğrulama
MHM Rentiva, finansal veri bütünlüğünü korumak için dış dünyadan gelen her ödeme bildirimini sıkı bir doğrulama sürecinden geçirir.
🛡️ 1. Kimlik Doğrulama Modeli
Bu bileşen, AuthHelper sınıfının bir uzantısı olarak çalışır ve sadece ödeme servis sağlayıcıları (PSP) için tanımlanan özel anahtarları kullanır.
- Kaynak Doğrulaması: İsteklerin sadece bilinen IP adreslerinden veya geçerli bir uygulama kimliğiyle geldiğini kontrol eder.
- Gizli Anahtar (Secret Key): Her PSP entegrasyonu için benzersiz bir
Webhook Secrettanımlanır.
✍️ 2. İmza Doğrulama (Signature Verification)
En yaygın kullanılan güvenlik methodu HMAC-SHA256'dır. Süreç şu adımlardan oluşur:
- Header Çıkarma: İstek başlığındaki
X-Rentiva-Signaturedeğeri alınır. - Hash Üretimi: Gelen ham istek gövdesi (Raw Body) ve sistemdeki
Webhook Secretkullanılarak sunucu tarafında yeni bir hash hesaplanır. - Karşılaştırma: Hesaplanan hash ile başlıktaki imza
hash_equals()(timing-attack safe) fonksiyonu ile karşılaştırılır.
⏳ 3. Replay ve Rate Koruması
Zaman Damgası (Timestamp) Kontrolü
İstek içindeki zaman damgası, sunucu saatiyle karşılaştırılır. Eğer fark 5 dakikadan (300sn) fazlaysa, istek bir "Replay Attack" (Tekrar Saldırısı) kabul edilerek reddedilir.
Webhook Rate Limiter
- Aynı işlem ID'si için saniyede birden fazla bildirim gelirse, sistem sadece ilkini işler.
WebhookRateLimitersınıfı, ödeme sağlayıcısından kaynaklanan mükerrer çağrıları (retries) yönetir.
⚙️ 4. İdempotent İşlem Stratejisi
Eğer ödeme servis sağlayıcısı aynı başarılı bildirimi (confirmed) tekrar gönderirse:
- Sistem veritabanında bu işlemin statüsünü kontrol eder.
- Eğer işlem zaten "Completed" ise, herhangi bir Ledger (Defter) işlemi yapmaz ancak servis sağlayıcısına
200 OKdönerek sürecin sona ermesini sağlar.
Bölüm Sonu Özeti
PayoutWebhookAuth, finansal manipülasyonları önleyen en kritik güvenlik katmanıdır.hash_equalskullanımı ile zamanlama saldırılarına karşı korunur.- Replay koruması ile eski veya ele geçirilmiş isteklerin tekrar yürütülmesi engellenir.
Değişiklik Günlüğü
| Tarih | Sürüm | Not |
|---|---|---|
| 19.03.2026 | 4.21.2 | HMAC-SHA256, hash_equals ve Replay Attack koruma detayları eklendi. |