Crypté
Ormar vous offre un moyen de chiffrer uniquement les champs de votre base de données. le backend de chiffrement fourni permet un chiffrement unidirectionnel (backend HASH) ainsi qu 'un chiffrement/déchiffrement bidirectionnel (backend FERNET).
!!!Attention Veuillez noter que pour que le chiffrement fonctionne, vous devez installer un package de chiffrement optionnel.
1 | |
Attention, ajouter encrypt_backend modifie le type de colonne de la base de données en TEXT, ce qui doit être reflété dans db via une migration (alambic) ou une modification manuelle.
Définir le Field Encryption
Pour chiffrer un champ, vous devez passer au moins les paramètres encrypt_secret et encrypt_backend.
1 2 3 4 5 6 7 8 9 10 11 12 | |
!!!vous avertit que vous pouvez chiffrer tous les types de champs, à l'exception de la colonne primary_key et de la famille Off (ForeignKey et ManyToMany).
Backend disponible
Le hash
HASH est un hachage à sens unique (comme un mot de passe) qui n'est jamais déchiffré lorsqu 'il est récupéré.
Pour le configurer, passez la valeur backend appropriée.
1 2 3 4 | |
Notez que puisque ce backend ne déchiffre jamais les valeurs stockées, il ne fonctionne que pour les champs de chaîne. le hachage utilisé est un hachage sha512, donc la longueur du champ doit être>=128.
Attention, dans le backend HASH, vous pouvez filtrer par valeur complète, mais les filtres tels que contains ne fonctionneront pas car les valeurs chiffrées sont comparées.
!!!note Notez que l'encrypt_secret fourni est d'abord haché et utilisé comme sel, donc pour comparer avec les chaînes stockées, vous devez recréer cette étape. order_by ne fonctionnera pas car les chaînes chiffrées sont comparées, vous ne pouvez donc pas trier de manière fiable.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
Fernet est une
FERNET est un backend de chiffrement/décryptage bidirectionnel
Pour le configurer, passez la valeur backend appropriée.
1 2 3 | |
Les valeurs sont chiffrées en route vers le côté de la base de données et déchiffrées en sortant. peut être utilisé pour tous les types, car la valeur de retour est analysée dans le type python correspondant.
Attention!!! Attention, dans le backend FERNET, vous perdez complètement la possibilité de filtrer, car une partie de la valeur chiffrée est horodatée. order_by aussi, car les chaînes chiffrées sont comparées, donc vous ne pouvez pas trier de manière fiable.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Customisation du backend
Si vous souhaitez prendre en charge d'autres types de cryptage (par exemple AES), vous pouvez fournir votre propre EncryptionBackend.
Pour configurer le backend, tout ce que vous devez faire est de sous-classer la classe ormar.fields.EncryptBackend et de fournir le backend requis.
Un exemple de backend virtuel (qui ne fait rien) ressemblerait à ceci:
1 2 3 4 5 6 7 8 9 | |
Pour utiliser ce backend, définissez encrypt_backend sur CUSTOM et fournissez votre backend comme argument via encrypt_custom_backend.
1 2 3 4 5 6 7 8 9 | |