Editor Login | Register
Ekle

> Akademik İnternet ® > ASP.NET
WCF Güvenliği - ASP.NET - Akademik İnternet ® -
NeMaToD
(Relased 14.07.2008 08:22:56)


WCF Güvenliği

Tasarım Usulleri

Servisinizi sarmalayıcı (wrapper) olarak tasarlayın Eğer ASMX ten geliyorsanız var olan sitemcilerinizi desteklemek için basicHttpBinding i kullanın Eğer DCOM dan geliyorsanız netTCPBinding i kullanın Eğer istemcileriniz intranette konuşlandırılmışsa transport güvenliği (transport security) seçin Eğer istemcileriniz internet üzerinde konuşlandırılmışsa mesaj güvenliğini (message security) seçin Kullanıcı doğrulama seçeneklerinizi bilin Eğer Microsoft dışındaki istemcilerle (non-MS) çalışacaksanız basicHttpBinding veya wsHttpBinding i kullanın Eğer Microsoft dışındaki istemcileriniz (non-MS) “WS stack” i anlıyorsa wsHttpBinding i kullanın  

Denetleme ve Kaydetme (Logging)

Servisinizi denetlemek için WCF denetlemesini (WCF auditing) kullanın Eğer retsiz (non-repudiation) önemliyse SuppressAuditFailure özelleğini “yanlış” olarak dikkate alın Servisinizdeki işlemleri kaydetmek için mesaj kaydetmeyi (message logging) kullanın. Kullanıcı yönetimi olayları için araçlar Önemli işletme işlemleri için araçlar Kayıt dosyalarını onaylanmamış girişlere karşı koruyun Hassas bilgileri kaydetmeyin (loglamayın)  

Onaylama (Authentication)

Kullanıcı doğrulama seçeneklerinizi bilin Yapabildiğinizde Windows Onaylamasını (Authentication) kullanın Eğer Windows Onaylaması (Authentication) ve mesaj güvenliği (message security) kullanan WCF olmayan istemcileri destekliyorsanız, Kerberos doğrudan seçeneklerini kullanmayı düşünün. Eğer kullanıcılarınız AD içinde ama Windows onaylamasını kullanamıyorsanız kullanıcı onaylamasını (username authentication) kullanmayı düşünün Eğer kullanıcılarınız SQL üyelik deposundaysa, SQL Üyelik Sağlayısını (SQL Membership Privider) kullanın Eğer kullanıcılarınız özel bir biçimde depolanmışsa özel doğrulama (custom validator) ile kullanıcı adı doğrulamasını (username authentication) kullanmayı düşünün Eğer istemcilerin sertifikası varsa istemci sertifika onaylamasını (client certificate authentication) kullanmayı düşünün. Eğer ortak uygulamalarınızın WCF servisi çağırınca onaylanması gerekiyorsa istemci sertifika onaylamasını (client certificate authentication) kullanmayı düşünün Eğer kullanıcı onaylamasını (username authentication) kullanıyırsanız, kullanıcı oturum açma (login) bilgilerini denetleyin Şifreleri doğrudan kullanıcı deposunda saklamayın Kullanıcıları güçlü şifreler kullanmaya zorlayın Kimlik kartları deposuna (credential store) girişlerini koruyun Eğer WCF ye bağlanmak için Windows formlarını kullanıyorsanız kimlik kartlarını (credentials) önbelleğe almayın.  

Yetkilendirme (Authorization)

Eğer rol bilgilerini Windows Gruplarda depoluyorsanız rol yetkilendirmesi için WCF PrincipalPermissionAttribute sınıfını kullanmayı düşünün Eğer ASP.NET rollerini kullanıyorsanız ASP.NET rol destekleyici (role provider) kullanmayı düşünün Eğer  yetkilendirme için Windows gruplarını kullanıyorsanız AspNetWindowsTokenRoleProvider ile ASP.NET rol destekleyicisini kullanın Eğer rol bilgilerini SQL de saklıyorsanız, rol yetkilendirmeleri için SQL Server Rol Destekleyici (SQL Server Role Provider) kullanmayı düşünün Eğer rol bilgilerini ADAM da tutuyorsanız, yetkilendirme için Authorization Store Role Provider ı kullanın. Eğer WCF işlemlerine erişmek için yetkilendirmeye ihtiyacınız varsa bildirim deyimi (declarative) yetkilendirmeyi kullanın Eğer işletme mantığına dayalı ince damarlı (fine-grained) yetkilendirme gerçekleştirmeye ihtiyaç duyarsanız, zorunlu (imperative) yetkilendirmeyi kullanın

  Bağlayıcı (Binding) Eğer internet üzerindeki istemcileri desteklemeye ihtiyaç duyarsanız wsHttpBinding i kullanın Eğer WCF servisinizi ASMX web sersileri gibi miras istemcilere açmaya ihtiyaç duyarsanız, basicHttpBinding i kullanın Eğer intranetten uzek WCF istemcilerini desteklemeye ihtiyaç duyarsanız netTcpBinding kullanmayı düşünün Eğer lokal WCF istemcilerini desteklemeye ihtiyaç duyarsanız netNamedPireBinding kullanmayı düşünün Eğer bağlantısız kuyruklanmış çağrıları (disconnected queued calls) desteklemeye ihtiyaç duyarsanız netMsmqBinding kullanın Eğer WCF istemci ile WCF servis arasında iki yönlü iletişimi desteklemeye ihtiyaç duyarsanız wsDualHttpBinding kullanın  

Yapılandırma Yönetimi

Mesaj tekrarlama saldırılarına karşı tekrar tespitini (Replay detection) kullanın Eğer servisinizi bir Windows servisinde barındırıyorsanız, bir mex (metadata exchange) bağlayıcı ortaya çıkarın Eğer WSDL inizi açıkta bırakmak istemiyorsanız HttpGetEnabled ı ve mex i (metadata exchange) kapatın Bağlayıcıları ve endpointleri yapılandırmada yönetin kodda değil Servis davranışı (behaviour), endpoint davranışı ve bağlayıcı yapılandırması oluşturduğunuzda isimleri servis yapılandırmasıyla bağdaştırın Hassa veri içeren yapılandırma bölümlerini şifreleyin  

İstisna (Exception) Yönetimi

Yapılandırılmış exception handling kullanın Üründeki hata ayrıntılarını kullanıcıya açılmayın Hata bilgisini kullanıcıya döndürmek için hata kontratı (fault contract) kullanın Unhandled exception lar global bir exception handler kullanın  

Barındırma (Hosting)

Eğer servisinizi bir Windows servisinde barındırıyorsanız en az imtiyazlı özel domain hesabı kullanın Eğer servisinizi IIS de barındırıyorsanız en az imtiyazlı servis hesabı kullanın IIS in desteklemediği bir transportu kullanmaya ihtiyacınız olmadıkça servisinizi barındırmak için IIS i kullanın  

Şahıslandırma ve Delegasyon (Impersonation and Delegation)

Şahıslandırma seçeneklerinizi bilin Eğer yeni ziyaretçiyi süzmeniz gerekirse yapay delegasyon kullanın Şahıslandırmaya ihtiyaç duyduğunuzda güvenli delegasyonunuzun olmadığı durumlarda LogonUser kullanmayı düşünün Bir Windows jetonuna (token) ihtiyacınız olduğunda ve yeni ziyaretçinin kimlik bilgisi (credental) sizde yoksa S4U yu kullanmayı düşünün İşletme mantığına dayalı şahıslandırma için programatik şahıslandırmayı (programatic impersonation) kullanın Programatik olarak şahıslandırma yaparken orijinal içeriğe döndüğünüze emin olun Sadece ihtiyacı oaln işlemlere şahıslandırma yapın Deklaratif (declarative) olarak şahıslandırma için OperationBehavior ı kullanın  

Giriş/Veri Onaylaması (Input/Data Validation)

Eğer parametreleri onaylamak zorunda kalırsanız parametre denetleyicilerini (parameter inspectors) kullanın Eğer servisiniz mesaj ya da veri kontratlarını kabul eden işlemlere sahipse mesajlarınızı onaylamak için şemaları kullanın Eğer şema onaylamasına ihtiyacınız olursa mesaj denetleyicilerini (message inspectors) kullanın İşlem parametrelerini uzunluk, alan, format ve tip açısından onaylayın Server daki parametre girişlerini onaylayın İstemcideki servis cevaplarını onaylayın İstemci taraflı onaylara güvenmeyin Kullanıcı destekli dosya adları ve yol (path) girişlerinden kaçının Güvensiz girişleri aksettirmeyin (echo)  

Proxy Usulleri

İstemcinizi Proxy sahtekarlığından (spoofing) korumak için metadatalarınızı HTTPS üzerinde oluşturun Eğer karşılıklı onaylamayı kapatırsanız servis sahtekarlığının (spoofing) farkında olun  

Yayılma Usulleri

Üründe geçici sertifikalar kullanmayın Eğer WCF uygulamanız için kimlik hesabındaki özel domain hesabı kullanıyorsanız Kerberos un istemci onayı için bir SPN oluşturun Eğer özel bir servis hesabı kullanıyorsanız ve delegasyon için kullanmaya ihtiyacınız olursa bir SPN oluşturun Eğer servisinizi özel domain kimliği kullanarak bir Windows servisinde barındırıyorsanız ve ASP.NET in servisi çağırırken yapay güvenli delegasyon kullanmaya ihtiyacı olursa  bir SPN oluşturun IIS in desteklemediği bir transportu kullanmaya ihtiyacınız olmadıkça servisinizi barındırmak için IIS i kullanın WCF servisinizi çalıştırmak için en az imtiyazlı bir hesap kullanın Konfigürasyon dosyalarındaki hassa verilerinizi koruyun

 




Derecelendir
Kaynak https://www.owasp.org/index.php/WCF_Security_Best_Practices , Çeviri
İçerik İhbarı
Bağlantılar: bilgininefendisi.net

Open Source Document Project AUP&TOS