enkripsi
Ormar memberi Anda cara untuk mengenkripsi hanya bidang dalam database Anda. Backend enkripsi yang disediakan memungkinkan enkripsi satu arah (HASH backend) serta enkripsi / dekripsi dua arah (FERNET backend).
!!!Peringatan, harap dicatat bahwa agar enkripsi berfungsi, Anda perlu menginstal paket enkripsi opsional.
1 | |
!!! Peringatan: Menambahkan enkripsi\ _ backend mengubah jenis kolom database menjadi TEXT, yang perlu tercermin dalam db melalui migrasi (alembic) atau perubahan manual
Tentukan enkripsi bidang
Untuk mengenkripsi suatu bidang, Anda harus lulus setidaknya parameter enkripsi\ _ rahasia dan enkripsi\ _ backend.
1 2 3 4 5 6 7 8 9 10 11 12 | |
!!!memperingatkan bahwa Anda dapat mengenkripsi semua jenis bidang kecuali kolom\ _ kunci utama dan seri relasional (ForeignKey dan ManyToMany). Periksa detail backend untuk informasi lebih lanjut.
Dukungan yang tersedia
hash
HASH adalah hash satu arah (seperti kata sandi) yang tidak pernah didekripsi saat diambil
Untuk mengaturnya, berikan nilai backend yang sesuai.
1 2 3 4 | |
Harap dicatat bahwa karena backend ini tidak akan pernah mendekripsi nilai yang tersimpan, itu hanya berlaku untuk bidang string. Hash yang digunakan adalah hash sha512, jadi panjang field harus > = 128.
Peringatan: Dalam backend HASH, Anda dapat memfilter dengan nilai penuh, tetapi filter seperti mengandung tidak akan berfungsi karena nilai terenkripsi dibandingkan
!!!Perhatikan bahwa enkripsi\ _ rahasia pertama hashes sendiri dan menggunakannya sebagai garam, jadi Anda perlu membuat ulang langkah ini untuk membandingkan dengan string yang disimpan. Order\ _ by tidak akan berfungsi karena membandingkan string terenkripsi membuat Anda tidak mungkin menyortir dengan andal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
Fenette
FERNET adalah backend enkripsi / dekripsi dua arah
Untuk mengaturnya, berikan nilai backend yang sesuai.
1 2 3 | |
Nilai dienkripsi dalam perjalanan ke database dan didekripsi dalam perjalanan keluar. Tersedia untuk semua jenis, karena nilai pengembalian diurai ke jenis Python yang sesuai.
!!! Peringatan Perhatikan bahwa di backend FERNET, Anda benar-benar kehilangan kemungkinan penyaringan karena bagian dari nilai terenkripsi adalah stempel waktu. Hal yang sama berlaku untuk pesanan\ _ by karena string terenkripsi dibandingkan, jadi Anda tidak dapat mengurutkan dengan andal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
backend kustom
Jika Anda ingin mendukung jenis enkripsi lain (yaitu AES), Anda dapat menyediakan Backend Enkripsi Anda sendiri.
Untuk mengatur backend, yang perlu Anda lakukan hanyalah subkelas ormar.fields. kelas EncryptBackend dan memberikan backend yang diperlukan.
Contoh backend virtual (yang tidak melakukan apa-apa) mungkin terlihat seperti ini:
1 2 3 4 5 6 7 8 9 | |
Untuk menggunakan backend ini, setel enkripsi\ _ backend ke CUSTOM dan berikan backend Anda sebagai parameter melalui enkripsi\ _ custom\ _ backend.
1 2 3 4 5 6 7 8 9 | |