September 10, 2013
Ini adalah Django 1.5.3, terbitan ketiga di rangkaian Django 1.5. Itu mengalamatkan satu masalah keamanan dan juga mengandung sebuah fitur pilihan untuk meningkatkan keamanan dari django.contrib.sessions
.
ssi
¶Dalam versi sebelumnya Django itu telah memungkinkan melewatkan pengaturan ALLOWED_INCLUDE_ROOTS
digunakan untuk keamanan dengan etiket cetakan ssi
dengan menentukan jalur relatif yang dimulai dengan satu dari akar yang diizinkan. Sebagai contoh, jika ALLOWED_INCLUDE_ROOTS = ("/var/www",)
berikutnya akan mungkin:
{% ssi "/var/www/../../etc/passwd" %}
Dalam praktiknya ini bukan sangat masalah umum, ketika itu akan membutuhkan cetakan penulis untuk menaruh berkas ssi
di variabel terkendali-pengguna, tetapi itu memungkinkan pada dasarnya.
django.contrib.sessions
¶django.contrib.sessions
saat ini menggunakan pickle
untuk menserialisasikan sesi data sebelum menyimpannya di backend. Jika anda sedang menggunakan signed cookie session backend dan SECRET_KEY
diketahui oleh penyerang (tidak ada kerentanan melekat di Django yang menyebabkannya bocor), penyerang dapat memasukkan deretan karakter kedalam sesinya yang, ketika dibonglar, menjalankan kode berubah-ubah pada peladen. Teknik untuk melakukannya sangat sederhana dan mudah tersedia di internet. Meskipun penyimpanan sesi kue menandatangani data kue-disimpan untuk mencegah sabotase, bocoran SECRET_KEY
segera meluas ke kerentanan pengerjaan kode terpencil.
Serangan ini dapat dikurangi dengan menserialisasikan sesi data menggunakan JSON daripada pickle
. Untuk memudahkan ini, Django 1.5.3 memperkenalkan pengaturan baru, SESSION_SERIALIZER
, untuk menyesuaikan bentuk serialisasi sesi. Untuk kesesuaian kebelakang, awalan pengaturan ini untuk menggunakan pickle
. Selagi serialisasi JSON tidak mendukung semua obyek Python seperti pickle
lakukan, kami sangat menganjurkan mengganti ke JSON-serialisasi nilai. Juga, seperti JSON membutuhkan kunci deretan karakter, anda akan sepertinya berjalan kedalam masalah jika anda menggunakan kuncu bukan-deretan karakter di request.session
. Lihat dokumentasi Serialisasi sesi untuk rincian lebih.
Des 02, 2017