Skip to main content

V12.4.1 File Storage

Requirement:#

Verify that files obtained from untrusted sources are stored outside the web root, with limited permissions.

Explanation:#

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

Remediation:#

Проверка того, что файлы, полученные из ненадежных источников, хранятся вне корневой папки веб-сайта с ограниченными разрешениями, является важным шагом в защите от угроз безопасности, таких как вредоносное ПО, несанкционированный доступ и кража данных. Корневой каталог веб-сайта — это каталог на сервере, содержащий файлы, доступные через веб-сервер, например веб-сайт или веб-приложение. Хранение файлов из ненадежных источников за пределами корневого каталога помогает гарантировать, что эти файлы не будут доступны напрямую из Интернета, что помогает снизить риск угроз безопасности.

Вот пример того, как реализовать это исправление в коде:

Храение пользовательских файлов вне корневого каталога
# Secure code for storing files from untrusted sources
import os
# Define the location to store the files
storage_dir = "/var/www/storage"
# Ensure that the storage directory exists
if not os.path.exists(storage_dir):
os.makedirs(storage_dir)
# Store the file from an untrusted source
with open(os.path.join(storage_dir, "file.txt"), "w") as f:
f.write(request.POST["file_content"])
# Limit the permissions of the stored file
os.chmod(os.path.join(storage_dir, "file.txt"), 0o640)

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

Additional:#

https://cwe.mitre.org/data/definitions/552.html