Django 1.8 docs утверждают, что «Если вы обслуживаете свои собственные статические файлы, убедитесь, что обработчики, такие как mod_php от Apache, которые будут запускать статические файлы в качестве кода, отключены». Как отключить любые такие обработчики, которые могут существовать для Gunicorn + Nginx?Отключить выполнение статических файлов как код, с Django, Gunicorn, Nginx
ответ
Nginx по умолчанию не имеет обработчиков, выполняющих это. Если в разделе server
в конфигурации nginx нет обработчиков, беспокоиться не о чем. Если это чистая установка nginx, вам не о чем беспокоиться.
Также проверьте конфигурацию nginx, если есть только один способ запуска кода python - через файл gunicorn и django's wsgi.py
.
В основном разработчики django предупреждают вас о хорошо известной уязвимости в Интернете.
https://www.owasp.org/index.php/Unrestricted_File_Upload
Как Nginx может служить только статические файлы, которые он должен использовать сервер приложений для динамических страниц, обработчик (PHP-FPM, gunicorn, uwsgi).
Может быть, если вы используете старую конфигурацию PHP nginx (с php-fpm в качестве обработчика), и вы добавили gunicorn для обслуживания приложения django, тогда пользователь мог бы загрузить файл PHP в файл media
django dir, а затем выполнить его через свой старый обработчик PHP.
Это очень странный случай, нет шансов, что это может произойти с новым сайтом, вы никогда не добавляете обработчик PHP для приложения django.
PHP-обработчик выглядит следующим образом:
location ~ \.php$ {
expires off;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_keep_conn on;
}
Как бы сделать такое обследование? – Daniel