Catatan terbitan Django 1.8.3¶
8 Juli 2015
Django 1.8.3 memperbaiki masalah keamanan dan kesalahan di 1.8.2.
Juga, django.utils.deprecation.RemovedInDjango20Warning
telah dinamai menjadi RemovedInDjango110Warning
sebagai versi peta jalan telah diperbaiki menjadi 1.9, 1.10, 1.11 (LTS), 2.0 (dijatuhkan dukungan Python 2). Untuk kesesuaian kebelakang, RemovedInDjango20Warning
tetap sebagai nama lain dapat diimpor.
Kemungkinan denial-of-service dengan mengisi sesi toko¶
Dalam versi sebelumnya Django, backend sesi membuat rekaman kosong baru di penyimpanan sesi kapanpun request.session
diakses dan ada kunci sesi yang disediakan di permintaan kue yang tidak mempunyai rekaman sesi. Ini dapat mengizinkan seorang penyerang dengan mudah membuat banyak rekaman sesi baru cukup dengan mengirim permintaan berulang dengan kunci sesi yang tidak diketahui, kemungkinan mengisi penyimpanan sesi atau menyebabkan rekaman sesi pengguna lain dikeluarkan.
Backend sesi siap-pakai sekarang membuat sebuah sesi hanya merekam jika sesi sebenarnya dirubah; rekaman sesi kosong tidak dibuat. Demikian kemungkinan DoS ini sekarang memungkinkan jika situs memilih untuk membuka tampilan merubah-sesi pada pengguna anonim.
Ketika setiap backend sesi siap-pakai telah diperbaiki terpisah (daripada memperbaiki kerangka kerja sesi inti), perawat dari backend sesi pihak-ketiga harus memeriksa apakah kerentanan yang sama hadir dalam backend mereka dan memperbaiki jika ada.
Kemunghinan suntikan kepala sejak pengesah menerima baris baru dalam masukan¶
Beberapa pengecek siap-pakai Django (EmailValidator
, paling serius) tidak melarang karakter baris baru (karena penggunaan dari $
sebagai ganti dari``Z`` di regular expression). Jika anda menggunakan nilai-nilai dengan baris baru di tanggapan HTTP atau kepala surel, anda dapat menderita dari serangan suntikan kepala. Django itu sendiri tidak rentan karena HttpResponse
dan alat pengirim surat dalam django.core.mail
melarang baris baru di kepala HTTP dan SMPT, masing-masing. Selagi pengecek telah diperbaiki di Django, jika anda sedang membuat tanggapan HTTP atau pesan surel di cara lain, itu adalah ide bagus untuk memastikan bahwa metode tersebut melarang baris baru juga. Anda mungkin juga ingin mengesahkan bahwa tiap data yang ada di aplikasi anda tidak mengandung baris baru yang tidak diharapkan.
validate_ipv4_address()
, validate_slug()
, dan URLValidator
juga terpengaruh, bagaimanapun, pada Django 1.6 bidang formulir GenericIPAddresseField
, IPAddressField
, SlugField
, dan URLField
yang menggunakan pengesah ini semua memilah masukan, jadi kemungkinan dari baris baru memasukkan data anda hanya ada jika anda sedang menggunakan pengesah ini diluat dari bidang formulir.
Tidak terdokumentasi, secara internal tidak digunakan fungsi validate_integer()
sekarang lebih ketat ketika itu mensahkan menggunakan regular expression daripada cukup memberikan nilai menggunakan int()
dan memeriksa jika sebuah pengecualian telah dimunculkan.
kemungkinan denial-of-service di pengesahan URL¶
URLValidator
menyertakan sebuah regular expression yang sangat lambat menilai terhadap masukan tidak sah tertentu. Regular expression ini telah disederhanakan dan dioptimalkan.
Perbaikan kesalahan¶
Diperbaiki
BaseRangeField.prepare_value()
untuk digunakan setiap metodeprepare_value()
base_field
(#24841).Diperbaiki kegagalan selama
makemigrations
jika sebuah modul perpindahan antara hilang__init__.py
atau adalah sebuah berkas (#24848).Diperbaiki
QuerySet.exists()
mengembalikan hasil tidak benar setelah keterangan denganCount()
(#24835).Diperbaiki
HStoreField.has_changed()
(#24844).Dikembalikan sebuah optimalisasi pada pengolah konteks cetakan CSRF yang menyebabkan sebuah pemulihan (#24836).
Diperbaiki sebuah pemulihan yang menyebabkan pengolah konteks cetakan untuk menulis kembali variabel disetel pada
RequestContext
setelah dia dibuat (#24847).Dicegah kehilangan sifat kolom
null
/not null
selama penamaan bidang dari basisdata MySQL (#24817).Diperbaiki sebuah kegagalan ketika menggunakan balikan hubungan one-to-one di
ModelAdmin.list_display
(#24851).Diperbaiki mengutip dari SQL ketika menamai kembali sebuah bidang pada
AutoField
di PostgreSQL (#24892).Diperbaiki kekurangan dari batasan unik ketika merubah sebuah bidang dari
primary_key=True
menjadiunique=True
(#24893).Diperbaiki kesulitan queryset ketika menggunakan
prefetch_related()
setelah menghapus obyek (#24831).Diizinkan menggunakan
choices
lebih panjang dari 1 hari denganDurationField
(#24897).Diperbaiki sebuah kegagalan ketika memuat perpindahan tergencet dari dua aplikasi dengan ketergantungan diantara mereka, dimana tergantung perpindahan diganti aplikasi sebagian diberlakukan (#24895).
Diperbaiki rekaman dari keadaan yang diberlakukan untuk penindihan (penggantian) perpindahan (#24628).
Diperbaiki keterangan queryset ketika menggunakan pernyataan
Case
denganexclude()
(#24833).Diperbaiki promosi join untuk banyak pernyataan
Case
. Sebagai contoh, bubuhi keterangan sebuah permintaan dengan banyak pernyataanCase
dapat tidak diharapkan menyaring hasil (#24924).Diperbaiki penggunaan dari perubahan di sub permintaan (#24744).
Diperbaiki
SimpleTestCase.assertRaisesMessage()
pada Python 2.7.10 (#24903).Disediakan kesesuaian kebelakang lebih baik untuk argumen
verbosity
di perintah pengelolaanoptparse
dengan menuangkan itu ke sebuah integer (#24769).Diperbaiki
prefetch_related()
di basisdata selain dari PostgreSQL untuk model menggunakan primary key UUID (#24912).Diperbaiki memindahkan batasan
unique_together
di MySQL (#24972).Diperbaiki kegagalan ketika mengunggah gambar dengan jenis MIME yang Pillow tidak mengetahui, seperti bitmap, di
forms.ImageField
(#24948).Diperbaiki sebuah pemulihan ketika menghapus sebuah model melalui admin yang mempunyai
GenericRelation
denganrelated_query_name
(#24940).Dizinkan kembali nilai-nilai bukan-ASCII untuk
ForeignKey.related_name
pada Python 3 dengan memperbaiki pemeriksaan sistem positif salah (#25016).Diperbaiki formulir obyek yang menggunakan obyek induk yang mempunyai primary key
UUIDField
dan obyek anak yang mempunyai sebuah primary keyAutoField
(#24958).Diperbaiki sebuah pemulihan di penyaring cetakan
unordered_list
di masukan tertentu (#25031).Diperbaiki sebuah pemulihan di
URLValidator
yang mentidaksahkan Punycode TLDs (#25059).Diperbaiki jejak pendapat pyinotify
runserver
(#23882).