Güvenlik
HookSniff, webhook teslimatlarını korumak için endüstri standardı güvenlik uygulamaları kullanır. Her webhook imzalanır, aktarım sırasında şifrelenir ve işlenmeden önce doğrulanır.
HMAC-SHA256 İmza Doğrulama
Her webhook, HMAC-SHA256 ile hesaplanan kriptografik bir imza içerir. Bu, webhook'un HookSniff'ten geldiğini ve değiştirilmediğini kanıtlar.
HookSniff, Standard Webhooks spesifikasyonunu takip eder — Svix, Clerk ve diğer webhook sağlayıcılarının kullandığı aynı standart.
Başlıklar
Her teslimat üç başlık içerir:
| Başlık | Başlıklar |
|---|---|
| webhook-id | Benzersiz mesaj ID'si (ör. msg_abc123) |
| webhook-timestamp | Unix zaman damgası. 5 dakikadan eskiyse reddedin. |
| webhook-signature | Boşlukla ayrılmış v1, imzaları |
Algoritma
signed_content = "{webhook-id}.{webhook-timestamp}.{body}"
signature = "v1," + base64(hmac_sha256(secret, signed_content))SDK'lar ile Doğrulama
Tüm HookSniff SDK'ları doğrulamayı otomatik olarak yapar:
// Node.js
import { Webhook } from 'hooksniff';
const wh = new Webhook('whsec_your_secret');
const payload = wh.verify(req.body, {
'webhook-id': req.headers['webhook-id'],
'webhook-timestamp': req.headers['webhook-timestamp'],
'webhook-signature': req.headers['webhook-signature'],
});
# Python
from hooksniff import Webhook
wh = Webhook("whsec_your_secret")
payload = wh.verify(request.data, dict(request.headers))
// Go
wh, _ := hooksniff.NewWebhook("whsec_your_secret")
payload, err := wh.Verify(r.Body, r.Header)Tüm 11 dil için Webhook Doğrulama Rehberi'ne bakın.
SSRF Koruması
HookSniff, Sunucu Tarafı İstek Sahteciliği (SSRF) saldırılarını önlemek için özel/iç IP adreslerine webhook teslimatını engeller.
| Engellenen | Örnekler |
|---|---|
| Özel IP'ler | 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 |
| Geri döngü | 127.0.0.1, ::1, localhost |
| Metadata endpoint'leri | 169.254.169.254 (AWS/GCP/Azure metadata) |
| DNS yeniden bağlanması | Kayıt zamanı değil, teslimat zamanı çözümlenir |
TLS Zorlaması
Tüm webhook teslimatları HTTPS kullanır. HookSniff, HTTP endpoint'lere teslimat yapmayı reddeder (geliştirme için localhost hariç).
- TLS 1.2+ zorunlu
- Sertifika doğrulaması zorunlu
- HTTP endpoint'ler endpoint_url_not_https hatasıyla reddedilir
İki Faktörlü Kimlik Doğrulama (2FA)
HookSniff hesabınızı TOTP tabanlı 2FA ile koruyun:
# Enable 2FA
curl -X POST https://hooksniff-api-1046140057667.europe-west1.run.app/v1/auth/2fa/enable \
-H "Authorization: Bearer hr_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"password": "your_password"}'
# Returns QR code URL for your authenticator appAPI Anahtar Güvenliği
Ortam değişkenleri kullanın
API anahtarlarını asla kodda sabit olarak yazmayın. Ortam değişkenleri veya gizli yönetici araçları kullanın.
Anahtarları periyodik olarak değiştirin
API anahtarlarını Ayarlar → API Anahtarları → Değiştir bölümünden değiştirin.
Her ortam için ayrı anahtarlar kullanın
Geliştirme, test ve üretim için farklı anahtarlar kullanın.
Anahtarları minimum izinlere göre ayarlayın
İzleme için salt okunur, gönderme için yazma anahtarları oluşturun.
Anahtarları asla versiyon kontrolüne eklemeyin
.env dosyasını .gitignore'a ekleyin. CI/CD'de gizli yönetici araçları kullanın.
Anahtarları istemci tarafı kodunda asla ifşa etmeyin
API anahtarları sunucunuzda durur, tarayıcı JavaScript'inde değil.
Güvenlik Olayı Yanıtı
Bir güvenlik sorunundan şüpheleniyorsanız:
- API anahtarınızı hemen değiştirin — Ayarlar → API Anahtarları → Değiştir
- Endpoint imza gizli anahtarlarını değiştirin — Endpoint'ler → Seç → Gizli Anahtarı Değiştir
- Denetim günlüğünü kontrol edin — Ayarlar → Denetim Günlüğü — şüpheli aktivite için
- Destek ile iletişime geçin — security@hooksniff.vercel.app