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

Исключение SuspiciousFileOperation

Исключение SuspiciousFileOperation наследуется от SuspiciousOperation и возникает, когда Django обнаруживает попытку выполнить потенциально небезопасную операцию с файлом. Это исключение выбрасывается при работе с файловыми полями, хранилищами и операциях записи/чтения файлов, когда путь к файлу содержит попытки выхода за пределы разрешенных директорий или использует недопустимые символы. Основная цель исключения - защитить файловую систему от атак типа Directory Traversal.

Синтаксис

from django.core.exceptions import SuspiciousFileOperation # Исключение выбрасывается автоматически при небезопасных операциях raise SuspiciousFileOperation("Message")

Пример

Рассмотрим попытку получить доступ к файлу за пределами медиа-директории:

from django.core.files.storage import default_storage from django.core.exceptions import SuspiciousFileOperation try: # Попытка выйти за пределы разрешенной директории file_path = default_storage.path("../../etc/passwd") with open(file_path, 'r') as f: content = f.read() except SuspiciousFileOperation as e: print("File operation blocked:", str(e))

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

"File operation blocked: The file path is suspicious"

Пример

Попытка сохранить файл с недопустимым именем:

from django.core.files.base import ContentFile from django.core.files.storage import default_storage from django.core.exceptions import SuspiciousFileOperation from myapp.models import Document try: # Создание документа с потенциально опасным именем doc = Document.objects.create( title="test", file=ContentFile(b"content", "../../../secret.txt") ) except SuspiciousFileOperation as e: print("File save blocked:", str(e))

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

"File save blocked: Attempted access to 'secret.txt' outside of storage root"

Пример

Обработка исключения при удалении файла:

from django.core.files.storage import default_storage from django.core.exceptions import SuspiciousFileOperation def safe_delete_file(file_path): try: if default_storage.exists(file_path): default_storage.delete(file_path) print("File deleted successfully") except SuspiciousFileOperation as e: print("Cannot delete file:", str(e)) except Exception as e: print("Other error:", str(e)) # Попытка удалить файл с подозрительным путем safe_delete_file("../../var/log/system.log")

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

"Cannot delete file: The file path is suspicious"

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

  • исключение SuspiciousOperation,
    базовое исключение для подозрительных операций
  • исключение DisallowedHost,
    возникающее при доступе с неразрешенного хоста
  • исключение DisallowedRedirect,
    возникающее при попытке редиректа на внешний URL
  • исключение SuspiciousFileOperation,
    подробная документация по файловым исключениям
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить