РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
528 of 818 menu

Исключение BadSignature

Исключение BadSignature относится к модулю django.core.signing и возникает в тех случаях, когда система не может проверить криптографическую подпись данных. Это исключение сигнализирует о том, что переданные данные были изменены, повреждены или подписаны с использованием другого секретного ключа. Оно используется для защиты данных от подделки при передаче между клиентом и сервером или при хранении в ненадежных местах.

Исключение наследуется от ValueError и обычно обрабатывается с помощью конструкции try...except. Наиболее часто встречается при работе с функциями signer.sign и signer.unsign, а также при использовании функций dumps и loads для подписанных данных. Если подпись недействительна, эти методы выбрасывают данное исключение, предотвращая использование скомпрометированных данных.

Синтаксис

from django.core.signing import BadSignature

Пример

Попробуем расшифровать данные с неверной подписью:

from django.core.signing import Signer, BadSignature signer = Signer() invalid_signed_data = "hello_world.INVALID_SIGNATURE" try: res = signer.unsign(invalid_signed_data) except BadSignature as e: print("Bad signature caught:", str(e))

Результат выполнения кода:

"Bad signature caught: Signature 'INVALID_SIGNATURE' does not match"

Пример

Обработаем исключение при работе с функцией loads:

from django.core.signing import loads, BadSignature corrupted_data = "eyJkYXRhIjoiY29ycnVwdGVkIn0:somebadhash" try: res = loads(corrupted_data) except BadSignature: res = "Invalid signature, returning default value" print(res)

Результат выполнения кода:

"Invalid signature, returning default value"

Пример

Использование исключения при проверке подписи с дополнительными параметрами:

from django.core.signing import Signer, BadSignature signer = Signer(salt="myapp") signed = signer.sign("secret_data") print("Original signed:", signed) modified = signed + "extra" try: res = signer.unsign(modified) except BadSignature: res = "Data integrity check failed" print(res)

Результат выполнения кода:

"Original signed: secret_data.kj9s8F7dg6s5S4d3F2g" "Data integrity check failed"

Смотрите также

  • исключение SignatureExpired,
    которое возникает при истечении срока действия подписи
  • исключение IntegrityError,
    которое возникает при нарушении целостности данных
  • исключение ValidationError,
    которое возникает при ошибках валидации формы
  • исключение DoesNotExist,
    которое возникает при отсутствии запрашиваемого объекта
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить