Я уверен, что у этого нет никаких проблем с безопасностью, но вставьте общее заявление о том, как трудно доказать отрицательный результат.
Вы не используете имя файла для доступа к файловой системе своего сервера, поэтому вы не уязвимы для атак на включение файлов.
ограничить то, что содержимое файла может быть, поэтому пользователи должны быть защищены от обмана в загрузке скриптов, но давайте рассмотрим гипотетический все равно:
Учитывая язык программирования, в котором программа могут быть записаны с использованием только символов, которые соответствуют [a-f0-9]
(что означает отсутствие пробелов), а программа может быть записана на 32 из этих символов, тогда злоумышленник может создать URL-адрес, который, как представляется, находится на вашем сайте (и, следовательно, заслуживает доверия), что вызывает файл под названием something.xyz
для загрузки. (Для значения xyz
, который зарегистрирован как расширение файла для скриптов, написанных на этом языке.) Это приведет к загрузке программы злоумышленника туда, где пользователь может дважды щелкнуть по ней и выполнить ее.
Это очень маловероятный случай для начала, и современные ОС отлично подходят для загрузки загружаемых файлов, требуя «Вы уверены, что хотите выполнить это?». так что это серьезный вопрос.
Чтобы быть параноидальным, вы можете ограничить имя файла тегами с .txt
или .md5
расширениями.
Специальные символы могли быть вопрос, но я не могу думать ни о том, что будет риск в безопасности. Если, например, в имя файла была введена новая строка, то современные версии PHP, скорее всего, выкинули бы что-то по строкам:
Предупреждение: заголовок может содержать не более одного заголовка, обнаружена новая строка в /Users/david/tmp/hfjkljiwe/index.php в строке 4
... и не позволяет сценарию выводить заголовок содержимого.
Не запускайте old versions of PHP, установите установленные исправления безопасности!
С другой стороны, браузеры, вероятно, принять имя файла, что файловая система они пишут, чтобы собирается бросить шаткий над нет.
Это говорит, паранойя никогда никому никакого вреда, когда он пришел к написанию безопасного программного обеспечения (особенно, когда он должен взаимодействовать с другим программным обеспечением - программного обеспечения содержит ошибки), так что добавление некоторых ограничений на то, что персонажи разрешено в имени файла, не будет плохой идеей.
Да. Это называется атакой включения файла. –
@RichardTheobald - Нет, это не так. Это было бы проблемой только в том случае, если код использовал имя файла, предоставленное пользователем для доступа к файловой системе сервера ... что это не так. – Quentin
@Quentin Правда, это не техническая атака включения файла, поскольку файл загружается, а не включается/отображается, но конечный результат по существу такой же, как и атака LFI: можно загрузить копию любого файла, который пользователь Apache имеет доступ к. http://hakipedia.com/index.php/Local_File_Inclusion –