Как запретить выполнение любого файла в определенном каталоге apache? - PullRequest
0 голосов
/ 29 мая 2018

Я использую apache2 и php.Я построил форму, которая позволяет пользователю загружать файлы в определенный каталог.Я уже реализовал некоторые другие функции безопасности, но я также хотел бы запретить выполнение любого файла в этом каталоге. Они предназначены только для загрузки и не выполняются пользователями или сценариями.

У меня есть следующий код для htaccess, но он фальшивый, не уверен в синтаксисе и не лучший способ сделать это:

<Location "/example/mydir/">
    <Files .>
        ForceType application/octet-stream
        Header set Content-Disposition attachment
    </Files>
</Location>

Не могли бы вы, пожалуйстапомочь мне исправить этот код или указать лучшие практики?

1 Ответ

0 голосов
/ 29 мая 2018

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

Отключение выполнения PHP таким способом обеспечивает только один уровень предотвращения.если этот слой по какой-то причине не работает, то ваша безопасность исчезла.Кроме того, это предотвращает выполнение содержимого только в том случае, если веб-сервер направлен непосредственно на URL-адрес файла, и не обеспечивает никакой защиты, если кто-то может обмануть существующий код php для включения содержимого.

Минимальныйподход будет заключаться в том, чтобы хранить содержимое вне каталогов, доступных по URL-адресам (т. е. вне корня документа и любых других сопоставленных каталогов).

Это не предотвращает уязвимость включения, но устраняет уязвимость прямой адресации.Весь доступ к контенту должен быть обеспечен PHP-скриптом.Но, с другой стороны, гораздо проще избежать OMGWTF, таких как:

Приложение ForceType / octet-stream

Отключение выполнения PHP ( php_flag engine off * ) - лучшее решение для отключения выполнения, чем изменение типа MIME.Использование такого типа MIME - это всегда плохая идея.

Альтернативный / дополнительный подход заключается в кодировании файлов , что предотвращает уязвимости включения кода.

Это такжехорошая идея назначить ваши собственные имена файлов артефактам в вашей файловой системе хоста .

...