Загрузить файл безопасности >> Ограничение имен и расширений недостаточно?(не может переименовывать или перемещать файлы) - PullRequest
1 голос
/ 02 октября 2011

"Самая важная гарантия - хранить загруженные файлы там, где пользователи не могут получить к ним прямой доступ по прямому URL-адресу. Это можно сделать путем хранения загруженных файлов за пределами корневого веб-каталога или настройки запрета доступа к веб-серверу.каталог для загрузки.

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

Я понимаю это, однако - я предоставляю пользователям Wordpress возможность загружать файлы в каталог с изображениями, поэтому я не могу выполнить ни одного из этих действий.Файлы должны перейти в каталог images и получить имя по своему выбору.

Вот что я делаю до сих пор:

1) Разрешить только файлы с именами с одним расширением, и расширение должно быть из списка доверенных.

2) Допускается только алфавитно-цифровая, пробелы и подчеркивания в первой части имени и менее 30 символов.

3) Не разрешать файлыс именем .htaccess для загрузки

4) Только для доступа администратора к загрузке и использования wp nonces

5) Проверка типа MIME

6) Проверка размера файла

Некоторые вопросы, которые у меня есть:

Если я отрицаю загрузку какого-либо файла с именем .htaccess и запрещаю любой файл с расширением .php, разве это не должно помешать кому-либо загрузить файл изображения с.php код встроен?

Я понимаю, что могу использовать php для копирования изображений без вредоносного кода, однако я планирую разрешить загрузку файлов .ttf и .css.

Я мог сканировать этоse файлы с php для скриптовых вопросительных знаков и т. д. Рекомендуется ли это?Если так, что я буду искать помимо этого?

Если я разрешаю только администраторам доступ и использую одноразовые номера и описанную выше методологию, насколько безопасен мой код и другие их действия, которые я должен делать?

Любая помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 20 октября 2011

Вы должны отключить выполнение PHP в каталоге изображений.Это предотвратит множество потенциальных проблем, которые вы рассмотрели, не беспокоясь о том, что пропустил сложную конструкцию имени файла.Добавьте php_flag engine off в конфигурацию apache для этого каталога.

Если они вам действительно не нужны по каким-либо причинам, вам следует также отключить файлы .htaccess, по крайней мере, в каталоге imagesВсе, что вы можете сделать в файле .htaccess, можно сделать в файле конфигурации apache за пределами любого каталога, который может быть доступен для записи веб-сервером.См. Директиву AllowOverride .

0 голосов
/ 19 октября 2011

Я думал, что столкнусь с этим - с трудом найду много отзывов здесь.

Если вы тщательно очистите имена файлов и только файлы изображений, текстовые и CSS-файлы из белого списка, какой тип защиты это вам даст.

В настоящее время я загружаю произвольное имя в каталог, очищаю имя, одно расширение, добавляем в белый список и повторно сохраняю в общедоступном каталоге изображений. И разрешить доступ только администраторам wp.

...