Найти в Дзене
Калинкин

Простая подпись и отмена подписи в Django

Оглавление

Узнайте, как подписывать и не подписывать содержимое в нескольких строках кода Django

Шифрование в Django
Шифрование в Django

В современном цифровом ландшафте безопасность данных стала важнейшим аспектом любого приложения.

В связи с растущей потребностью в защите конфиденциальной информации шифрование стало жизненно важным инструментом обеспечения безопасности и приватности данных. Эти данные могут включать широкий спектр конфиденциальной информации, такой как пригласительные коды, адреса электронной почты, имена пользователей и другую личную информацию, которой не следует делиться с пользователями в виде обычного текста.

Использование шифрования позволяет нам зашифровывать эти данные, делая их нечитаемыми для кого-либо без соответствующего ключа шифрования. Этот дополнительный уровень безопасности необходим для поддержания доверия наших пользователей, а также для соблюдения различных правовых и нормативный требований к защите данных. В результате шифрование стало неотъемлемой частью разработки современных приложений, и ожидается, что в будущем его использование будет только расширяться.

К счастью, Django предоставляет ряд служебных функций, позволяющих нам шифровать и расшифровывать данные нескольких типов — str, int, list, dictionary.

Как сгенерировать секретный ключ в Django

Django предоставляет утилиту для генерации секретных ключей. IT

from django.core.management.utils import get_random_secret_key
print(get_random_secret_key())

Как зашифровать и расшифровать данные в Django

Класс A. Signer

Модуль в Django под названием signing имеет служебный класс Signer. Класс дает нам возможность предоставить любой ключ шифрования, который мы хотим, а затем использовать его для шифрования поддерживаемых типов данных.

from django.core import signing

def encrypt(raw_str: str, encryption_key: str) -> str:
# takes in any encryption key (i.e. salt), and uses it to encrypt some object
signer = signing.Signer(salt=encryption_key)
return signer.sign_object(raw_str)

def decrypt(encoded_str: str, encryption_key: str) -> str:
# takes in any encryption key (i.e. salt), and uses it to decrypt a token
signer = signing.Signer(salt=encryption_key)
try:
return signer.unsign_object(encoded_str)
except signing.BadSignature:
raise ValueError(f"Unable to decode hash {encoded_str}")

B. написание.dumps() и signing.loads()

Django дополнительно абстрагирует шифрование, предоставляя два метода dumps и loads, которые внутренне выбирают SECRET_KEY, указанный в settings.py создайте файл, а затем выполните операции шифрования с указанным ключом шифрования.

from django.core import signing

def encrypt(raw_str: str):
# Picks the `SECRET_KEY` provided in settings.py
return signing.dumps(raw_str)

def decrypt(raw_str: str):
# Picks the `SECRET_KEY` provided in settings.py
return signing.loads(raw_str)

Вот и все, подписание и отмена подписи в Django упрощены.

Не забудьте лайкнуть, поделиться и подписаться, если вы нашли эту статью полезной. Спасибо!