2014-01-21 3 views
0

Я хочу, чтобы nginx запрещал пользователям, у которых есть папки внутри/webroot/uploadsКак запретить выполнение скрипта во всех подкаталогах?

e.g.

/webroot/uploads/user1 
/webroot/uploads/user2 
/webroot/uploads/user999 

выполнить любой скрипт оболочки или двоичный файл (php, pl, py).

Вредоносные коды часто скрыты в jpg или gif-файлах. например badfile.php.jpg

Я также вижу в папке вредоносные двоичные файлы.

Вот мои предварительные правила:

location ~ /webroot/uploads/(.+)\.php$ { 
deny all; 
} 

location ~ /webroot/uploads/(.+)\.pl$ { 
deny all; 
} 

Но я не уверен, что это достаточно надежно. Поэтому я ценю вашу помощь.

ответ

1

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

Если у вас есть мост FastCGI, который выполняет файлы, проверьте его конфигурацию и можете ли вы запретить каталог webroot/uploads.

Вы также можете заставить загруженные файлы не иметь установленный бит, хотя (в зависимости от того, кто работает с файлами, см. Ниже), что может не помочь. Для получения дополнительной информации используйте что-то вроде upload_store_access user:rw (подробности см. На странице HttpUploadModule documentation).

Последним моментом является уязвимость по неверной конфигурации, через которую кто-то может иметь случайные файлы (не заканчивающиеся на .php), выполняемые обработчиком PHP. Следуйте за this article за подробной информацией и правильной настройкой.

Смежные вопросы