Belgeler / Yapılacaklar ve Yapılmayacaklar
Belgeler

Yapılacaklar ve Yapılmayacaklar

CWaptcha deploy'larında güvenlik en iyi uygulamaları ve kaçınılması gereken yaygın hatalar.

✓ Yapılacaklar
  • Prodüksiyonda HTTPS'i etkinleştirin

    Prodüksiyonda RequireHttps: true ayarlayın. CWaptcha'nın HMAC'ı alan bütünlüğünü sağlar; ancak nonce ve fieldSalt aktarım sırasında TLS tarafından korunmalıdır. SubtleCrypto da güvenli bir bağlam (HTTPS veya localhost) gerektirir.

  • NonceTtlSeconds değerini kısa tutun

    Varsayılan 300 saniyedir (5 dakika). Uzun TTL değerleri token hırsızlığı ve tekrar kullanım penceresini genişletir. Yüksek güvenlikli formlar (parola sıfırlama, ödeme) için 60–120 saniye düşünebilirsiniz.

  • Çok düğümlü deploy'larda dağıtık nonce deposu kullanın

    Sticky session'sız bir yük dengeleyicinin arkasında çalışan her uygulamada AddCWaptcha() sonrasında .UseDistributedNonceStore() çağırın. Aksi takdirde bir düğümdeki nonce'lar diğerlerine görünmez.

  • SecretKey'i kaynak kontrolü dışında saklayın

    Geliştirmede dotnet user-secrets, prodüksiyonda ortam değişkenleri kullanın. Commit edilmiş bir SecretKey, deponuzu okuyabilen herkesin geçerli CAPTCHA tokenleri oluşturmasına izin verir.

  • POST işleyicilerini koruyun, GET değil

    Yalnızca POST yolunu ProtectedPaths'e ekleyin (örn. "/Contact", "/Contact/Post" değil). Middleware yalnızca POST'u doğrular. GET'i korumak sayfanın yüklenmesini engeller.

  • CWaptcha'yı birden fazla güvenlik katmanından biri olarak kullanın

    Hız sınırlama (ASP.NET Core Rate Limiting middleware), girdi doğrulama ve sunucu tarafı kimlik doğrulama ile birleştirin. CWaptcha bot korumasıdır, her derde deva değildir.

✗ Yapılmayacaklar
  • ProtectedPaths ve [CWaptchaValidation]'ı aynı rotaya uygulamayın

    Middleware ve özellik nonce'ı birlikte kullanır. Her ikisi de aynı istekte çalışırsa middleware nonce'ı tüketir ve özellik bunu zaten kullanılmış olarak görür — istek her zaman başarısız olur. Rota başına bir mekanizma seçin.

  • Sayfanın nonce'ını navigasyonlar arasında yeniden kullanmayın

    Her sayfa yüklemesi yeni bir nonce yayınlar. Tarayıcıda geri gidip form göndermek, zaten kullanılmış bir token kullanır. Bu tasarım gereğidir — tekrar saldırılarını önler.

  • Sticky session'sız yük dengeleyicinin arkasında MemoryNonceStore kullanmayın

    Bellek içi durum işlem başınadır. Nonce'ı yayınlayan düğümden farklı bir düğüme gelen istek onu bulamaz. Bunun yerine UseDistributedNonceStore() kullanın.

  • cwaptcha.js'i CDN veya harici sunucudan yüklemeyin

    Betik NuGet paketine gömülüdür ve middleware tarafından /cwaptcha/cwaptcha.js'den sunulur. Harici olarak barındırmak HMAC alan tuzu mekanizmasını bozar ve kendi barındırmalı güvenlik modelini ortadan kaldırır.

  • Prodüksiyonda HTTPS doğrulamasını atlamayın

    HTTP üzerinde fieldSalt düz metin olarak iletilir ve geçerli bir token oluşturmak için ele geçirilebilir. Prodüksiyonda her zaman HTTPS'i zorunlu kılın — RequireHttps: true ile veya ters proxy / IIS düzeyinde.