Catatan terbitan Django 1.3.6¶
February 19, 2013
Django 1.3.6 memperbaiki empat masalah keamanan hadir di terbitan Django sebelumnya di deretan 1.3.
Ini adalah terbitan keamanan/perbaikan kesalahan keenam di deretan Django 1.3.
Peracunan kepala Host¶
Beberapa bagian dari Django – berdiri sendiri dari aplikasi ditulis-pengguna-akhir – menggunakan URL penuh, termasuk nama ranah, yang dibangkitkan dari kepala HTTP Host. Dokumentasi Django terkadang mengandung catatan menyarankan pengguna pada bagaimana mengkonfigurasi peladen Jaringan untuk memastikan bahwa hanya kepala Host sah dapat mencapai aplikasi Django. Bagaimanapun, itu masih tersedia teknik untuk membodohi konfigurasi banyak peladen Jaringan umum untuk menyokong aplikasi dengan tidak benar dan kemungkinan kepala Host jahat.
Untuk alasan ini, Django 1.3.6 menambahkan pengaturan baru, ALLOWED_HOSTS
,yang harus mengandung sebuah daftar eksplisit dari nama ranah/host sah untuk situs ini. Sebuah permintaan dengan kepala Host tidak mencocokkan sebuah masukan di daftar ini akan memunculkan SuspiciousOperation
jika request.get_host()
dipanggil. Untuk rincian penuh lihat dokumentasi untuk pengaturan ALLOWED_HOSTS
.
Nilai awalan untuk pengaturan ini di Django 1.3.6 adalah ['*']
(mencocokkan tiap host), untuk kesesuaian-kebelakang, tetapi kami sangat menganjurkan semua situs untuk mensetel nilai lebih terbatas.
Pengesahan host ditiadakan ketika DEBUG
adalah True
atau ketika menjalankan percobaan.
Deserialisasi XML¶
Pengurai XML di pustaka standar Python rentan pada sejumlah serangan melalui entitas luar dan perpanjangan entitas. Django menggunakan pengurai ini untuk deserialisasi perlengkapan basisdata berbentuk-XML. Perlengkapan pendeserialisasi ini tidak dimaksudkan untuk digunakan dengan data tidak dipercaya, tetapi untuk kesalahan pada sisi dari keamanan di Django 1.3.6 pendeserialisasi XML menolak untuk mengurai sebuah dokumen XML dengan DTD (pengertian DOCTYPE), yang menutup jalan serangan ini.
Masalah-masalah ini di pustaka standar Python adalah CVE-2013-1664 and CVE-2013-1665. Informasi lebih tersedia from the Python security team.
Penserial XML Django tidak membuat dokumen dengan DTD, jadi ini tidak menyebabkan masalah apapun dengan berjenis pulang-pergi dari dumpdata
ke loaddata
, tetapi jika anda mengumpan dokumen anda sendiri ke perintah pengelolaan loaddata
, anda akan butuh memastikan mereka tidak mengandung sebuah DTD.
Kelelahan memori formset¶
Versi sebelumnya dari Django tidak mensahkan atau membatasi data jumlah-formulir disediakan oleh klien di formulir pengelolaan formset, membuatnya memungkinkan untuk menguras memory tersedia peladen dengan memaksanya membuat sejumlah sangat besar dari formulir.
Di Django 1.3.6, semua formset mempunyai angka maksimal dipaksakan-ketat dari formulir (1000 oleh awalan, meskipun itu dapat disetel lebih tinggi melalui argumen pabrik formset max_num
).
Riwayat admin menampilkan kebocoran informasi¶
Di vesi sebelumnya dari Django, sebuah pengguna admin tanpa merubah perizinan pada model dapat masih menampilkan perwakilan unicode dari instance melalui catatan riwayat admin mereka. Django 1.3.6 sekarang membatasi tampilan catatan riwayat admin untuk sebuah obyek pada pengguna dengan perubahan perizinan untuk model itu.