CheckMarx - Уязвимость манипулирования файлами - php - PullRequest
0 голосов
/ 08 апреля 2020

мой код, по сути, берет файл, загруженный на сервер с помощью внешнего интерфейса, ссылаясь на переменную $ _FILES в php, и перемещает его в новый файл на сервере. Следующий фрагмент суммирует код:

$acutal_file = $_FILES['file_uploaded']['tmp_name'];
move_uploaded_file($actual_file, $target_file);

Здесь я получаю переменную target_file из базы данных.

Итак, когда я выполняю сканирование кода, это создает высокую уязвимость для этого фрагмента с ошибкой введите «File Manipulation», выделяет указанную выше переменную $ _FILES и выдает сообщение «Входные данные, полученные в файле, используются для определения местоположения файла, в который нужно записать данные, что потенциально позволяет злоумышленнику изменить или повредить содержимое этого файла. или вообще создайте новый файл. "

Кто-нибудь знает, как избежать ошибки?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Я предлагаю вам прочитать и применять все правила, определенные в OW ASP Шпаргалка по загрузке файлов . это лучшие правила, чтобы иметь

0 голосов
/ 08 апреля 2020

Некоторые способы смягчения обхода пути и манипулирования файлами:

  1. Проверка ввода пользователя. Принимайте только допустимые значения (белый список).
  2. Удалите «.. \» и «../» из любого ввода, который используется в контексте файла.
  3. Используйте индексы вместо фактических частей файла имена при использовании языковых файлов. (т. е. значение 5 из представления пользователя = индийский, а не ожидание от пользователя возврата «индийский»).
  4. Внедрение строгих политик доступа к коду для ограничения места, в котором можно сохранять файлы.
  5. Убедитесь, что пользователь не может указать какую-либо часть пути к файлу, который был прочитан или записан.

Эта информация была найдена на https://www.checkmarx.com/knowledge/knowledgebase/path-traversal. Если вы уже используете программное обеспечение Checkmarx, оно может дать вам много ложных срабатываний, но не всегда это допускайте. Я надеюсь, что это помогло. Если у вас есть другие вопросы, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...