Catatan terbitan Django 1.6.6

Agustus 20, 2014

Django 1.6.6 memperbaiki beberapa masalah keamanan di 1.6.5.

reverse() dapat membangkitkan URL menunjuk ke rumah lain

Di keadaan tertentu, membalikkan URL dapat membangkitkan URL relatif-skema (URL mulai dengan dua garis miring), yang dapat tiba-tiba mengalihkan pengguna ke rumah berbeda. Seorang penyerang dapat memanfaatkan ini, sebagai contoh, dengan mengalihkan pengguna ke situs phishing dirancang meminta untuk sandi pengguna.

Untuk memperbaiki ini, membalikkan URL sekarang memastikan bahwa tidak ada URL mlai dengan dua garis miring (//), mengganti garis miring kedua dengan URL disandikan pasangan (%2F). Pendekatan ini memastikan bahwa arti kata masih sama, selagi membuat relatif URL ke ranah dan tidak ke skema.

Unggah berkas denial-of-service

Sebelum terbitan ini, penanganan unggah berkas Django di konfigurasi awalannya mungkin menurun untuk menghasilkan sejumlah besar dari panggilan sistem os.stat() ketika nama berkas ganda diunggah. Sejak stat() mungkin meminta IO, ini mungkin menghasilkan perlambatan ketergantungan-data besar yang perlahan memburuk terhadap waktu. Hasil bersih adalah yang diberikan waktu cukup, seorang pengguna dengan kemampuan mengunggah berkas-berkas dapat menyebabkan penampilan buruk di penangan unggahan, akhirnya menyebabkan itu menjadi lebih lambat hanya dengan menggunggah berkas 0-byte. Pada titik ini, bahkan hubungan jaringan lambat dan sedikit permintaan HTTP akan semua yang diperlukan untuk membuat situs tidak tersedia.

Kami telah memperbaiki masalah ini dengan merubah algoritma untuk membangkitkan nama berkas jika sebuah berkas dengan nama terunggah sudah ada. Storage.get_available_name() sekarang menambah garis bawah ditambah 7 karakter alfanumerik acak (sebagai contoh "_x3a1gho"), daripada mengulang melalui garis bawah diikuti oleh angka (sebagai contoh "_1", "_2", etc.).

Pembajakan sesi RemoteUserMiddleware

Ketika menggunakan RemoteUserMiddleware dan RemoteUserBackend, sebuah perubahan pada kepala REMOTE_USER diantara permintaan tanpa campur tangan keluar dapat dihasilkan sebelum sesi pengguna sedang ditunjuk oleh pengguna kemudian. Middleware sekarang mencatat pengguna keluar pada usaha masuk gagal.

Kebocoran data melalui permintaan pengubahan deretan krakter di contrib.admin

Di versi terlama dari Django dia memungkinkan untuk mengungkapkan tiap data bidang dengan merubah parameter “popup” dan “to_field” dari permintaan deretan karakter pada halaman formulir perubahan admin. Sebagai contoh, meminta URL seperti /admin/auth/user/?pop=1&t=password dan melihat halaman HTML diizinkan melihat acakan sandi dari tiap pengguna. Selagi admin membutuhkan pengguna untuk memiliki perizinan untuk melihat halaman formulir perubahan di tempat pertama, ini dapat menyebabkan data bocor jika anda bergantung pada pengguna mempunyai akses untuk melihat hanya bidang tertentu pada model.

Untuk mengalamatkan masalah, sebuah pengecualian sekarang akan dimunculkan jika sebuah nilai to_field yang tidak terkait bidang ke model yang telah didaftarkan dengan admin telah ditentukan.

Perbaikan kesalahan

  • Diperbaiki surel dan pengecekan URL untuk menolak tanda garis (#22579).

  • Dicegah indeks di bidang maya PostgreSQL (#22514).

  • Dicegah kasus tepi dimana nilai dari bidang FK dapat diinisialisasikan dengan nilai salah ketika sebuah formset model berderet dibuat untuk hubungan ditentukan ke titik ke bidang selain dari PK (#13794).

  • Disimpan kembali sinyal pre_delete untuk penghapusan kebawah GenericRelation (#22998).

  • Diperbaiki penanganan transaksi ketika menentukan basisdata bukan-awalan di createcachetable dan flush (#23089).

  • Diperbaiki kesalahan “ORA-01843: not a valid month” ketika menggunakan Unicode dengan versi terlama dari peladen Oracle (#20292).

  • Disimpan kembali perbaikan untuk mengirim surel unicode dengan Python 2.6.5 dan dibawah (#19107).

  • Dicegah UnicodeDecodeError di runserver dengan bukan-UTF-8 dan loakl bukan-Inggris (#23265).

  • Diperbaiki kesalahan JavaScript selagi menyunting obyek banyak-geometri di widget OpenLayers (#23137, #23293).

  • Dicegah sebuah kegagalan pada Python 3 dengan string permintaan mengandung karakter bukan-ASCII tidak tersandi (#22996).

Back to Top