# Dokumentasi Django 4.2.9.dev20231204082947

# 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).
- Restored bug fix for sending Unicode email with Python 2.6.5 and below (#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).