Catatan terbitan Django 1.5.9

Agustus 20, 2014

Django 1.5.9 memperbaiki beberapa masalah keamanan di 1.5.8.

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.

Back to Top