Catatan terbitan Django 1.1.4¶
Selamat datang di Django 1.1.4!
Ini adalah terbitan “bugfix” keempat di deretan karakter Django 1.1, memperbaiki kestabilan dan penampilan dari kode dasar Django 1.1.
Dengan satu pengecualian, Django 1.1.4 merawat kesesuaian kebelakang dengan Django 1.1.3. Itu juga mengandung sejumlah perbaikan dan pembetulan lainnya. Django 1.1.4 adalah peningkatan dianjurkan untuk setiap pengembangan dan penyebaran saat ini menggunakan atau menyasar Django 1.1.
Untuk rincian penuh pada fitur baru, ketidaksesuaian kebelakang, dan fitur diusangkan di cabang 1.1, lihat Catatan terbitan Django 1.1.
Perubahan bertentangan kebelakang¶
Pengecualian CSRF untuk permintaan AJAX¶
Django menyertakan mekanisme perlindungan CSRF, yang memanfaatkan token dimasukkan kedalam formulir keluar. Middleware kemudian memeriksa untuk kehadiran token pada pengajuan formulir, dan mengecek itu.
Sebelum Django 1.2.5, perlindungan CSRF kami membuat sebuah pengecualian untuk permintaan AJAX, pada dasar berikut:
Banyak alat bantu AJAX menambahkan sebuah kepala X-Requested-With ketika menggunakan XMLHttpRequest.
Peramban mempunyai kebijakan asli-sama ketat mengenai XMLHttpRequest.
Di konteks dari peramban, hanya cara yang kepala penyesuaian dari sifat ini dapat ditambahkan adalah dengan XMLHttpRequest.
Karena itu, untuk mudah penggunaan, kami tidak memberlakukan pemeriksanaan CSRF untuk meminta yang muncul menjadi AJAX pada dasar dari kepala X-Requested-With. Kerangka kerja jaringan Ruby on Rails mempunyai pengecualian yang sama.
Baru saja, insinyur di Google membuat anggota dari tim pengembangan Ruby on Rails menyadari dari perpaduan dari plugin peramban dan pengalihan yang dapat mengizinkan seorang penyerang menyediakan kepala HTTP penyesuaian pada permintaan ke tiap situs jaringan. Ini dapat mengizinkan permintaan tiruan muncul menjadi permintaan AJAX, sehingga mengalahkan perlindungan CSRF yang percaya sifat asli-sama dari permintaan AJAX.+
Michael Koziarski dari tim Rails membawa ini ke perhatian kami, dan kami dapat menghasilkan bukti dari konsep menunjukkan kerentanan sama di penanganan CSRF Django.
Untuk memperbaiki ini, Django akan sekarang memberlakukan pengesagan CSRF penuh ke semua permintaan, tanpa memperhatikan asal jelas AJAX. Ini secara teknis bertentangan kebelakang, tetapi resiko keamanan telah dijatuhkan lebih besar perhatian kesesuaian dalam kasus ini.
Tambahannya, Django akan sekarang menerima token CSRF dalam kepala HTTP penyesuaian X-CSRFTOKEN, sama halnya di pengajuan formulir itu sendiri, untuk mudah penggunaan dengan alat bantu JavaScript terkenal yang mengizinkan pemasukan kepala penyesuaian kedalam semua permintaan AJAX.
Silahkan lihat CSRF docs for example jQuery code yang menunjukkan teknik ini, memastikan bahwa anda mencari di dokumentasi untuk versi Django anda, seperti kode tepat diperlukan berbeda untuk beberapa versi terlama dari Django.