Catatan terbitan Django 1.9.3¶
1 Maret 2016
Django 1.9.3 memperbaiki dua masalah keamanan dan beberapa kesalahan dalam 1.9.2.
CVE-2016-2512: Pengalihan berbahaya dan kemungkinan serangan XSS melalui URL pengalihan disediakan-pengguna mengandung autentifikasi dasar¶
Django relies on user input in some cases (e.g.
django.contrib.auth.views.login() and i18n)
to redirect the user to an "on success" URL. The security check for these
redirects (namely django.utils.http.is_safe_url()) considered some URLs
with basic authentication credentials "safe" when they shouldn't be.
Sebagai contoh, sebuah URL seperti http://mysite.example.com\@attacker.com akan dianggap aman jika rumah permintaan adalah http://mysite.example.com, tetapi mengalihkan ke URL ini mengirim pengguna ke attacker.com.
Juga, jika seorang pengembang bergantung pada is_safe_url() untuk menyediakan sasaran pengalihan dan menaruh URL seperti itu kedalam sebuah tautan, mereka dapat menderita dari serangan XSS.
CVE-2016-2513: Pendaftaran pengguna melalui perbedaan pewaktuan pada peningkatan faktor pekerjaan pengacak sandi¶
Di setiap versi utama dari Django sejak 1.6, angka awal dari perputaran untuk PBKDF2PasswordHasher dan subkelasnya telah ditingkatkan. Ini memperbaiki keamanan dari sandi seperti kecepatan dari perangkat keras meningkat, bagaimanapun, itu juga membuat perbedaan pewaktu diantara sebuah permintaan masuk untuk pengguna dengan sandi dikodekan dalam angka terlama dari putaran dan permintaan masuk untuk pengguna yang tidak ada (yang menjalankan nomor default pengacak bawaan untuk putaran sejak Django 1.6).
Ini hanya mempengaruhi pengguna yang tidak masuk sejak perulangan ditingkatkan. Pertama kali pengguna masuk setelah sebuah perputaran meningkat, sandi mereka diperbaharui dengan perputaran baru dan tidak lagi sebuah perbedaan pewaktuan.
Metode BasePasswordHasher.harden_runtime() baru mengizinkan pencampur menjembatani jarak waktu berjalan diantara faktor pekerjaan (sebagai contoh perputaran) disokong dalam sandi dikodekan yang ada dan faktor pekerjaan awal dari pencampur. Cara ini diterapkan untuk PBKDF2PasswordHasher dan BCryptPasswordHasher. Sejumlah putaran untuk pencampur terakhir belum berubah sejak Django 1.4, tetapi beberapa proyek mungkin mensubkelaskannya dan meningkatkan faktor pekerjaan sesuai kebutuhan.
Sebuah peringatan akan dikeluarkan untuk tiap third-party password hashers that don't implement sebuah metode harden_runtime().
Jika anda mempunyai pencampur sandi berbeda di basisdata anda (seperti pencampur SHA1 dari pengguna yang belum masuk sejak pengacak awal diganti ke PBKDF2 in Django 1.4), perbedaan pewaktu pada permintaan masuk untuk pengguna ini mungkin lebih hebat dan perbaikan ini tidak memperbaiki perbedaan itu (atau tiap perbedaan ketika merubah pencampur). Anda dapat upgrade those hashes untuk mencegah serangan pewaktu untuk kasus itu.
Perbaikan kesalahan¶
- Dilewatkan pemeriksaan URL (baru di 1.9) jika pengaturan
ROOT_URLCONFtidak ditentukan (#26155). - Diperbaiki sebuah kegagalan pada PostgreSQL yang dicegah menggunakan
TIME_ZONE=NonedanUSE_TZ=False(#26177). - Ditambahkan sistem pemeriksaan untuk meminta tabrakan nama dari hubungan tersembunyi (#26162).
- Diperbaiki sebuah pemulihan untuk kasus-kasus dimana
ForeignObject.get_extra_descriptor_filter()mengembalikan sebuah obyekQ(#26153). - Diperbaiki pemulihan dengan sebuah permintaan
__in=qsuntuk sebuahForeignKeydengan kumpulanto_field(#26196). - Dibuat dapat di pickle
forms.FileFielddanutils.translation.lazy_number()(#26212). - Diperbaiki serialisasi
RangeFielddanArrayFielddengan nilaiNone(#26215). - Memperbaiki kegagalan ketika menyaring berdasarkan
Decimaldalam RawQuery` (#26219). - Mengizinkan kembali tanda garis di nama ranah tingkat-atas dari URL diperiksa oleh
URLValidatoruntuk memperbaiki sebuah pemulihan di Django 1.8 (#26204). - Diperbaiki beberapa kegagalan pengusangan shim di
SimpleTemplateResponseyang mundur di Django 1.9 (#26253). - Diperbaiki
BoundFielduntuk diizinkan kembali potongan-potongan dari subwidget (#26267). - Dirubah pesan "permission denied" admin di cetakan masuk untuk menggunakan
get_usernamedaripadausernameuntuk mendukung penyesuaian model user (#26231). - Diperbaiki sebuah kegagalan ketika melewatkan nama cetakan yang tidak ada ke metode
load_template()pemuat cetakan penyimpanan sementara (#26280). - Dicegah instance
ContentTypeManagerdari berbagi cache mereka (#26286). - Dipulihkan sebuah perubahan di Django 1.9.2 (#25858) yang mencegah hubungan lazy relatif ditentukan pada model abstrak untuk diselesaikan menurut
app_labelmodel wujud mereka (#26186).