Her şeyden önce, SSL (HTTPS) ve HTTP kimlik doğrulamasının nasıl çalıştığını anlamaya çalışın.
Her zamanki HTTP kimlik doğrulama yöntemleri (Özet, Temel ve HTTP'nin üzerine uygulayabileceğiniz formlar + çerez tabanlı kimlik doğrulama düzeni) kimlik doğrulaması bilgilerini az çok düz metin olarak gönderdikleri için kendiliğinden güvensizdir. Verilerin POST alanlarında veya üstbilgilerinde olup olmadığı ve base64 kodlamasının uygulanıp uygulanmadığı bu açıdan hiç önemli değildir, parola ağ trafiğine erişimi olan herkes tarafından açıkça görülebilir. Bu, güvenilmeyen bir kanal üzerinden HTTP kimlik doğrulamasının değersiz olduğu anlamına gelir: bir saldırganın parolanızı okuması için gereken tek şey biraz ağ koklamasıdır.
SSL , doğal olarak güvensiz bir kanal üzerinden güvenli bir iletişim kanalı uygular. Bu, kabaca şu şekilde çalışır:
- Sunucu imzalı bir sertifika gönderir
- İstemci sertifikayı bilinen iyi imzalama anahtarları listesine göre doğrular; Sertifika imzaları zincirlenebilir, böylece her düğüm "beni imzalayan imza iyi ise ben de öyleyim" der, ancak nihayetinde, zincirin istemcide önceden yapılandırılmış birkaç güvenilir otoriteden birine çözümlemesi gerekir.
- İstemci, paylaşılan bir sırrı göndermek için sunucunun genel şifreleme anahtarını kullanır
- Sunucu paylaşılan anahtarın şifresini özel anahtar kullanarak şifresini çözer (yalnızca meşru sunucu özel anahtara sahip olduğundan, diğer sunucular paylaşılan sırrın şifresini çözemez)
- İstemci, paylaşılan sır kullanılarak şifrelenen gerçek istek verilerini gönderir
- Sunucu istek verilerinin şifresini çözer, ardından şifreli bir yanıt gönderir
- İstemci yanıtın şifresini çözer ve kullanıcıya sunar.
Burada birkaç önemli noktaya dikkat edin:
- Sertifika zinciri, istemcilerin, isteklerine müdahale eden birinin değil, konuştukları sunucunun gerçek olduğundan emin olmalarını sağlar. Bu nedenle gerçek bir SSL sertifikası satın almalısınız ve geçersiz, süresi dolmuş veya başka bir şekilde yanlış sertifika kullanan bir siteye geldiğinizde tarayıcılar size korkutucu uyarılar gönderiyor: Dünyadaki tüm şifreleme, yanlış kişiyle konuşuyor.
- Sırrı değiştirmek için kullanılan genel / özel şifreleme, başarılı iletişimin yalnızca bu özel istemci ve sunucu çifti arasında çalışmasını sağlar: koklanan ağ paketleri şifrelenir ve verilere ulaşmak için sunucunun özel anahtarını gerektirir.
- Özel / ortak anahtar şifrelemesinden çok daha düşük bir performans yükü olduğundan, isteğin büyük kısmı için simetrik şifreleme kullanılır. Anahtar (paylaşılan sır), özel / genel anahtar şifrelemesi kullanılarak değiştirilir, çünkü bunu güvenli bir şekilde yapmanın tek yolu budur (kurye hizmeti gibi ayrı bir kanal üzerinden taşımak dışında).
Açıkçası, bazı ek yükler var, ancak düşündüğünüz kadar kötü değil - kesinlikle büyük miktarda trafik için hazırlanmıyorsanız, çoğunlukla "ona daha fazla donanım atın" uygun yanıttır. Google veya Facebook düşünün). Normal şartlar altında, yani tipik web uygulaması kullanımı, SSL yükü ihmal edilebilir ve sonuç olarak, gizli verileriniz olur olmaz, kaynaklar dahil olmak üzere SSL üzerinde her şeyi çalıştırmak en iyisidir. SSL, HTTP trafiğini korumanın tek geçerli yoludur; diğer yöntemler basitçe standartlaştırılmamıştır ve bu nedenle yaygın olarak desteklenmemektedir ve kesinlikle bunları kendiniz uygulamak istemezsiniz, çünkü dürüst olmak gerekirse, onları yanlış yapmak çok kolaydır.
TL; DR: Evet, SSL + Temel Kimlik Doğrulama iyi bir fikir, evet, güvenli bir sunucuya (ve geçerli bir sertifikaya ) ihtiyacınız var, evet, işleri biraz yavaşlatacak, ama hayır, bu endişelenecek bir şey değil şimdi.