2015-10-07 4 views
2

Django 1.8 docs утверждают, что «Если вы обслуживаете свои собственные статические файлы, убедитесь, что обработчики, такие как mod_php от Apache, которые будут запускать статические файлы в качестве кода, отключены». Как отключить любые такие обработчики, которые могут существовать для Gunicorn + Nginx?Отключить выполнение статических файлов как код, с Django, Gunicorn, Nginx

ответ

1

Nginx по умолчанию не имеет обработчиков, выполняющих это. Если в разделе server в конфигурации nginx нет обработчиков, беспокоиться не о чем. Если это чистая установка nginx, вам не о чем беспокоиться.

Также проверьте конфигурацию nginx, если есть только один способ запуска кода python - через файл gunicorn и django's wsgi.py.

+0

Как бы сделать такое обследование? – Daniel

1

В основном разработчики 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; 
}