Firesheep güvensiz çerez değişimi sorununu ön plana çıkardı.
Bir web kullanıcısıyla iletişim kurarken, tüm çerez değiş tokuşlarının yalnızca sunucuya SSL güvenli bir bağlantı yoluyla gerçekleşmeye zorlanmasını nasıl sağlayabilirsiniz?
Senaryomuz, web uygulamasının ASP.NET 4.0'da yazılmış ve IIS 7.5, kapsamı biraz daraltıyorsa) çalıştıran Windows Server 2008 R2 üzerinde barındırılmasıdır.
Zorlamak için app.config kullanabilirsiniz; biçim (
<system.web> Bölüm)
<httpCookies domain="String" httpOnlyCookies="true|false" requireSSL="true|false" />
yani en azından gerçekten istiyorsun
<httpCookies requireSSL='true'/>
Ama gerçekten de gerçekten çengelli bir javascript yapmıyorsanız, httpOnlyCookies'i de açacaksınız.
Sitenizi Firesheep'e (ve ilgili saldırılara) karşı korumanın en güvenli yolu:
Site genelindeki SSL korumasına taşı : Tüm sitenizi HTTPS'ye taşıyın ve tüm HTTP erişimini devre dışı bırakın. Başka bir deyişle, tüm sitenizi SSL ile koruyun. Bunu yapmak için daha fazla kaynak: Firesheep'e karşı nasıl korunulur , site çapında SSL'nin artıları ve eksileri , SSL neden Firesheep'e karşı korur .
Tüm çerezlerde GÜVENLİ bayrağını ayarlayın : Sunucu bir çerez ayarladığında, çerez üzerinde GÜVENLİ bayrağını ayarlamasını sağlayın. GÜVENLİ bayrağı, kullanıcının tarayıcısına bu çerezi yalnızca SSL güvenli (HTTPS) bağlantılar üzerinden geri göndermesini söyler; tarayıcı hiçbir zaman şifrelenmemiş (HTTP) bir bağlantı üzerinden GÜVENLİ bir çerez göndermez. En basit adım, bu bayrağı sitenizin kullandığı her çerezde ayarlamaktır.
Ayrıca, bazı ek adımlar öneririm:
<SCRIPT SRC=...>Aracılığıyla), HTTPS URL'lerine referans verdiklerinden emin olmanızı öneririz; aksi halde sitenizin güvenliğini aktif saldırılara maruz bırakıyorsunuz. (Ayrıca bkz Jeremiah Grossman'ın FAQ .) Kullanıcılarınızı karışık içerik uyarıları ile su altına sokmaktan kaçınmak için üçüncü taraf resimler ve kitaplıklar da dahil olmak üzere tüm içeriğin HTTPS aracılığıyla da sunulmasını sağlamak istemektedir.
Bazıları yukarıdakilerin aşırı olduğunu iddia edebilir. Bazı durumlarda, sitenin yalnızca bir bölümünde SSL kullanarak Firesheep'e karşı koruma sağlamak mümkün olabilir. Bununla birlikte, bunu yapmak bakım ve ayrıntılı bilgi gerektirir ve doğru olması daha zordur. Soruyu burada sormanız gerektiğinden, şahsen site çapında SSL ile başlamanızı tavsiye ederim; doğru yapma şansınız daha yüksektir.
Bunu IIS'de nasıl uygulayabilirim : IIS uzman değilim, bu yüzden size kesin bir tarif veremem Ancak, IIS'de SSL'yi etkinleştirme ile ilgili bu referans sizin için yararlı olabilir. Site kökünü sağ tıklayabilir,
Properties ,
Directory Security sekmesini tıklayın, ardından
Secure Communications 'da
Edit' ı tıklayın ve
Require Secure Channel (SSL) 'i etkinleştirin. IIS Tüm çerezlerde GÜVENLİ bayrağını otomatik olarak ayarlamak için Varolan bir siteyi taşımak için, bir HTTP sayfasını ziyaret eden herkes HTTPS'ye yönlendirilecek şekilde bir yönlendirme ayarlamanızı öneririm. denenmemiş): HTTPS'ye yönlendirme , HTTPS'ye yönlendirme için üç yöntem . Mevcut bir siteye taşınırsanız, sitenize yapılan tüm bağlantıları ve referansları
http: URL'leri
https: URL'lerine. ASP.NET'in tüm çerezlerde GÜVENLİ bayrağını ayarlamak için nasıl yapılandırılacağından emin değilim, ancak
cookieRequireSSL="true" Veya
<httpCookies requireSSL="true"> İçin
Web.config; bunu yapmak önemlidir ve özellikle HTTP etkinse veya HTTP sayfalarından HTTPS sayfalarına bir tür yönlendirmeniz varsa önemlidir. Son olarak, HTTPS için performans ayarı üzerinde yayınlanan birçok malzeme var.
Kendimi sorunu çözerken bu konuya rastladım. Sahip olduğum çözünürlük, çerez yollarının büyük/küçük harfe duyarlı olmasıdır. İşte ilgili soru.
Çözümüm, açılış sayfasından doğru yola yönlendirmekti. Olası yönlendirme döngülerine dikkat ettiğinizden emin olun.
url.com/VirtualDirectory/default.aspx ->
// şimdi doğru yolu verecektir url.com/virtualdirectory/default.aspx response.redirect ("~/default.aspx");