Http'yi https'ye yönlendirmeden https'yi tüm siteyi zorla


14

Tüm sitemi nasıl https yapacağımı araştırırken birçok tartışma yapıldı. En çok yanıt http'yi https'ye (.htaccess dosyası) yönlendirmekti, ki bu iyi değil, çünkü aynı işi iki kez yapmak iyi değil (iki istek). Ayrıca, "ortadaki adam" ilk http alır ve sitemin doğrudan https gitmek istiyorum. Sitenizin tamamını https yapmanın başka bir yolu var mı ve bunu nasıl yapacaksınız? Örneğin, example.com'a kullanıcı yazdığında, bu example.com, http veya başka bir şeyden yönlendirmeden otomatik olarak https'ye gider mi?


insanların https'ye yönlendirilmesini istemiyorsanız bunun yerine ne olmak istersiniz?
Michael Hampton

@MichaelHampton Belki acemi soru soruyorum, ama pratik olarak http "silmek" istiyorum ve var olan tek şey https. Ya da bu mümkün değilse, güvenlik için yeterince iyi olursa yeniden yönlendirme kullanabilirim. Yönlendirme http-> https'nin o kadar iyi olmadığını duydum çünkü hala http olduğu ve yeniden yönlendirme sırasında trafiğin önlenebildiğini duydum.
Marko Tamburic

HTTP 301 kalıcı yönlendirme sizin arkadaşınızdır, zaman aşımını ayarlamayı unutmayın.
Marcel

Sadece http'yi kaldırabilirsiniz. Ancak, kullanıcı https girmiyorsa yalnızca bağlantı reddedildi iletisi alır: // Bazı siteler için bu daha iyidir, çünkü güvenlik daha yüksektir. Kullanılabilir bir http sürümü varsa, çerezler ilk istek şifrelenmemiş olarak gönderilebilir. Bir şirket posta sistemi gibi şeyler için sadece https + kullanıcı eğitimi tamam, genel bir site için muhtemelen çok sayıda ziyaretçi kaybedeceksiniz.
Josef, Reinstate Monica

Afaik HTTP2 ile mümkün oldu, ancak yine de ssl şeritleme saldırısından kaçınmayacak (aşağıdaki cevaplarda açıklanmıştır).
peterh - Monica'yı geri döndür

Yanıtlar:



22

http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security , sunucunuzun etki alanına yalnızca HTTPS üzerinden erişilmesi gerektiğini belirtmesini sağlar. Bu yalnızca sonraki istekler için geçerlidir, bu nedenle ilk HTTP yükü olurdu, ancak gelecekteki istekler birisi açıkça HTTP yazmış olsa bile HTTPS'yi yükler.

IE henüz desteklemiyor, ancak diğer ana dallar destekliyor.


Hala ilk talebe karşı koruma sağlamaz.
Jenny D

3
@JennyD Cevabımda tam olarak bunu söyledim.
ceejayoz

@JennyD "Korumak" ile ne demek istiyorsun? Bir MiM, yerel dns / yönlendirme ve tüm etki alanınızı taklit etmedikçe, http -> https yönlendirmesine karşı hiçbir şey yapamaz. Bu durumda, sunucularınıza asla erişilmediğinden, ne yaptığınız gerçekten önemli değildir.
Red Alert

2
@JennyD Peki, HSTS mesajınızdan gerçekten daha iyi bir çözüm. Bu da "yönlendirme bunu yapmanın yoludur" diyor. Bir yönlendirme her zaman MITMed olabilir. HSTS ile yönlendirme, kullanıcı + tarayıcı başına yılda bir kez MITMed edilebilir (veya başlıktaki son kullanma süresi ne olursa olsun) - diğer tüm talep edilmez.
ceejayoz

1
@MarkoTamburic İkisini birleştiremezsiniz.
ceejayoz

7

Diğerlerinin söylediği gibi, kullanıcıları doğru protokolü seçmeye zorlayamazsınız. Ancak kullanıcı HTTP kullanmaya çalıştığında ne yapmalısınız? Yönlendirme de yetersizdir, çünkü sizinle istemci arasında oturan bir saldırgan, yönlendirmeyi kesebilir, böylece istemci bunu asla görmez. İstemci düz HTTP göndermeye devam eder ve saldırgan SSL katmanını sunucudan ayırır ( SSL sıyırma saldırısı ).

Bunu önlemenin tek kesin yolu HTTP'ye hiç hizmet etmemek . 80 numaralı bağlantı noktasında yanıt vermeyin, ancak kullanıcıyı HTTPS ile tekrar denemeye yönlendiren düz bir metin sayfası sunmak (ancak saldırganın manipüle edebileceği bir bağlantı sağlamamak ). Bu, kullanıcıyı https://tarayıcılarına yazmaya zorlar , böylece SSL ile bağlantıyı başlatır ve MITM saldırısını önler.


3
Ancak, çoğu kullanıcı yazmayacağı için bu bir değiş tokuş https://. Bunun yerine, "ha, site bozuldu" diyecekler ve gidecekler. En iyi durum senaryosu www.example.comhem HTTP hem de HTTPS'ye yanıt veriyor olabilir , ancak uygulamanın admin.example.comyalnızca HTTPS'de olduğu gibi bir şey üzerinde çalışıyor olması olabilir .
ceejayoz

Kabul. Uygulamada, neredeyse hiç kimse bunu yapmaz.
Andrew Schulman

Bunun nasıl daha fazla MiM geçirmez olacağını anlamıyorum. Ortadaki adam köprünüzü başka bir yere işaret edecek şekilde değiştirebilirse, kullanıcının gelen paketlerini kontrol ettiği anlamına gelir. Siteye neye benzediğine bakılmaksızın, sitesine kolayca kolayca yönlendirebilir veya istediği köprüyü ekleyebilir.
Red Alert

Ancak, teoride, istemci SSL ile bağlantıyı başlatırsa değil.
Andrew Schulman

3
bu doğrudur - ancak istemci SSL ile başlarsa, OP'nin bir sorunu yoktur. Sorun, SSL olmadan başlattıklarında ve aktif olarak sabote eden bir MiM varsa, onları güvenilir bir şekilde SSL'ye almanın bir yolu yok.
Red Alert


1

ceejayoz burada özellikle belirtilen saldırıyı önlemek için en iyi cevaba sahiptir, ancak burada bir çok insanın eksik olduğunu da belirtmek isterim ki temel olarak HTTP'nin diğer kısmı zaten çözülmüştü. Kalıcı bir 301 yönlendirmesi yapmak istiyorsunuz. Bu, istemciye yeni adrese daha fazla istekte bulunmasını söyler. Bu nedenle evet, birisi yanlış URL'yi yazarsa 2 istekte bulunur, ancak gelecekte iyi bir istemcinin bu URL'ye yönelik istekleri algılaması ve daha fazla israf isteğini önlemek için doğru isteği yapması beklenir. Sorun, bunun yalnızca tam URL için olmasıdır. HSTS, 'önümüzdeki n saniye boyunca bu alan adından güvenli olmayan bağlantılara da izin verme' diyerek bu şemayı geliştirir.

Kullanıcılar güvenli olmayan yerlerde hassas siteleri ziyaret etmemelidir. Özellikle güvensiz yerlerde onlar için kayıt olmamalıdırlar. Bunlar, 'güvenilmeyen kaynaklardan ekleri açmayın' gibi öğretilmesi gereken temel kullanıcı güvenliği ilkeleridir. Bu, daha önce hiç ziyaret edilmemiş siteler için MiM saldırılarını önlemenin en iyi yanıtı.

Bir yan not olarak, bazı tarayıcılar bilinen bazı sitelerin her zaman HSTS kullandığını söyleyerek bunu geliştirir. Ne yazık ki, kendinizi bu listeye kolayca ekleyemezsiniz.

Daha fazla okuma: http://coderrr.wordpress.com/2010/12/27/canonical-redirect-pitfalls-with-http-strict-transport-security-and-some-solutions/

http://dev.chromium.org/sts

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.