it-swarm-id.com

Bagaimana memastikan bahwa cookie selalu dikirim melalui SSL saat menggunakan ASP.NET di IIS 7.5?

Firesheep telah membawa masalah pertukaran cookie tidak aman ke garis depan.

Bagaimana Anda dapat memastikan bahwa semua pertukaran cookie dipaksa terjadi hanya melalui koneksi SSL ke server ketika Anda berkomunikasi dengan pengguna web?

Skenario kami adalah aplikasi web ditulis dalam ASP.NET 4.0 dan di-host di Windows Server 2008 R2 yang menjalankan IIS 7.5 jika itu mempersempit cakupannya.

23
cpuguru

Anda dapat menggunakan app.config untuk memaksanya; formatnya adalah (dalam <system.web> bagian)

<httpCookies domain="String"
             httpOnlyCookies="true|false" 
             requireSSL="true|false" />

jadi Anda benar-benar ingin, minimal

<httpCookies requireSSL='true'/>

Tetapi sebaiknya Anda juga mengaktifkan httpOnlyCookies, kecuali jika Anda melakukan javascript yang benar-benar bengkok.

21
blowdart

Cara teraman untuk melindungi situs Anda dari Firesheep (dan serangan terkait):

  • Pindah ke perlindungan SSL di seluruh situs : Pindahkan seluruh situs Anda ke HTTPS, dan nonaktifkan semua akses HTTP. Dengan kata lain, lindungi seluruh situs Anda dengan SSL. Berikut adalah beberapa sumber daya lain untuk melakukan itu: cara melindungi dari Firesheep , pro dan kontra dari SSL luas situs , mengapa SSL melindungi terhadap Firesheep .

  • Setel bendera AMAN pada semua cookie : Setiap kali server mengatur cookie, atur agar bendera setel AMAN pada cookie. Bendera SECURE memberi tahu browser pengguna untuk hanya mengirim kembali cookie ini melalui koneksi SSL-secure (HTTPS); browser tidak akan pernah mengirim cookie SECURE melalui koneksi yang tidak terenkripsi (HTTP). Langkah paling sederhana adalah mengatur bendera ini pada setiap cookie yang digunakan situs Anda.

Saya juga merekomendasikan beberapa langkah tambahan:

  • Hati-hati dengan konten pihak ketiga : Widget pihak ketiga, perpustakaan, dan konten dapat menjadi risiko keamanan. Jika Anda menyertakan Javascript dari pihak ketiga (mis., Melalui <SCRIPT SRC=...>), Saya sarankan Anda memastikan mereka mereferensi URL HTTPS; jika tidak, Anda mengekspos keamanan situs Anda terhadap serangan aktif. (Lihat juga Jeremiah Grossman FAQ pada widget pihak ketiga .) Untuk menghindari membanjiri pengguna Anda dengan peringatan konten campuran , Anda akan ingin memastikan bahwa semua konten, termasuk gambar dan perpustakaan pihak ketiga, juga dikirimkan melalui HTTPS.

Beberapa orang mungkin berpendapat bahwa hal di atas berlebihan. Dalam beberapa kasus, perlindungan terhadap Firesheep dapat dilakukan dengan menggunakan SSL hanya pada sebagian situs. Namun, melakukan hal itu membutuhkan perawatan dan pengetahuan terperinci, dan lebih sulit untuk melakukannya dengan benar. Mengingat Anda harus mengajukan pertanyaan di sini, saya pribadi menyarankan agar Anda mulai dengan SSL seluruh situs; Anda memiliki peluang yang lebih baik untuk melakukannya dengan benar.

Cara menerapkan ini di IIS : Saya bukan ahli IIS, jadi saya tidak bisa memberi Anda resep yang pasti tentang bagaimana menerapkan langkah-langkah ini di IIS. Namun, referensi ini pada mengaktifkan SSL pada IIS mungkin berguna bagi Anda. Sepertinya Anda dapat mengklik kanan pada root situs, pilih Properties , klik pada tab Directory Security, lalu di Secure Communications, klik Edit dan aktifkan Require Secure Channel (SSL). Saya tidak tahu cara mengonfigurasi IIS untuk mengatur bendera SECURE secara otomatis pada semua cookie. Untuk memigrasi situs yang sudah ada, saya sarankan Anda mengatur redirect sehingga siapa pun yang mengunjungi halaman HTTP diarahkan ke HTTPS. Referensi berikut dapat membantu dengan itu ( belum teruji): redirect ke HTTPS , tiga metode untuk redirect ke HTTPS . Jika memigrasikan situs yang ada, Anda juga perlu mengubah semua tautan dan referensi ke situs Anda dari http: URL ke URL https:. Saya tidak yakin cara mengkonfigurasi ASP.NET untuk mengatur flag AMAN pada semua cookie, tapi saya pikir Anda dapat menambahkan cookieRequireSSL="true" Atau <httpCookies requireSSL="true"> Ke Web.config Anda; itu penting untuk dilakukan, dan terutama penting jika Anda mengaktifkan HTTP atau jika Anda memiliki semacam pengalihan dari halaman HTTP ke halaman HTTPS. Akhirnya, ada banyak materi yang diterbitkan pada penyetelan kinerja untuk HTTPS .

18
D.W.

Saya menemukan utas ini sambil memutuskan untuk mengeluarkan sendiri. Resolusi yang saya miliki adalah bahwa jalur cookie adalah case-sensitive. Ini pertanyaan terkait.

https://stackoverflow.com/questions/399982/why-are-cookie-paths-case-sensitive

Resolusi saya adalah mengalihkan dari halaman arahan ke jalur yang benar. Pastikan untuk melihat kemungkinan loop pengalihan.

url.com/VirtualDirectory/default.aspx ->

// yang sekarang akan memberikan jalur yang benar url.com/virtualdirectory/default.aspx response.redirect ("~/default.aspx");

1
MichaelChan