Catatan terbitan Django 1.4.4

February 19, 2013

Django 1.4.4 memperbaiki empat masalah keamanan hadir di terbitan Django sebelumnya di rangkaian 1.4.

Ini adalah terbitan keempat perbaikan kesalahan/keamanan di rangkaian Django 1.4.

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.4.4 menambahkan pengaturan baru, ALLOWED_HOSTS, 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.4.4 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.4.4 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.4.4, 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.4.4 sekarang membatasi tampilan catatan riwayat admin untuk sebuah obyek pada pengguna dengan perubahan perizinan untuk model itu.

Perbaikan kesalahan dan perubahan lain

  • Dicegah keadaan transaksi dari membocorkan dari satu permintaan ke selanjutnya (#19707).

  • Dirubah sebuah sintaksis perintah SQL menjadi sesuai MySQL 4 (#19702).

  • Ditambahkan kesesuaian-kebelakang dengan sandi MD5 lama tidak tergarami (#18144).

  • Banyak sekali dokumentasi perbaikan dan pembetulan

Back to Top