Достаточно ли держать папку для загрузки за пределами public_html, чтобы защитить мое приложение от вредоносных загрузок? - PullRequest
1 голос
/ 03 июня 2010

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

Достаточно ли хранить файлы с их оригинальными именами в папке «uploads» вне «webroot» и извлекать их с помощью некоторого скрипта download.php?

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

Ответы [ 2 ]

1 голос
/ 03 июня 2010

Нет, этого недостаточно.

Когда вы сохраняете загруженный файл, вы должны убедиться, что ничего вредоносного не происходит (например, если «оригинальное имя» файла было чем-то вроде «../somewhere else»)может быть возможно перезаписать другой файл, включая некоторый PHP-скрипт, в public_html, что позволит взломщику получить более высокий уровень доступа).Вероятно, разумнее сгенерировать случайное имя или хотя бы очистить исходное имя файла перед его использованием.

Аналогичным образом файл download.php должен быть неуязвим для того, чтобы его «обманули» при извлечении файла, который не загруженкаталог.

0 голосов
/ 03 июня 2010

Это зависит от того, что вы подразумеваете под «вредоносными загрузками».

Как предполагает Артелиус, даже если у вас есть выделенный каталог - И убедитесь, что вы называете файлы, используя базовое имя ($ uploaded_name), все еще существует вероятность отказа в обслуживании из-за атаки или заражения данных. Генерация уникального имени для файла и сохранение исходного имени в другом месте было бы немного безопаснее.

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

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

С

...