WordPress + nginx: запрет выполнения PHP-файлов в uploads

Аналог php_value engine off для nginx

В Apache проблема решается просто: в каталог uploads помещается .htaccess следующего содержания:

[-]
View Code Apache configuration
php_value engine off

В .htaccess не предусмотрен (что можно рассматривать и как достоинство, и как недостаток), поэтому там нужно применить несколько другой подход.

В описание виртуального хоста помещаем следующие строки:

[-]
View Code nginx configuration
location ^~ /wp-content/uploads/ {
    if (!-e $request_filename) {
        rewrite ^(.+)$ /index.php last;
    }

    types {
        text/plain php php3 php4 php5 phtml phps pl pm;
    }
}

И заставить nginx перечитать конфигурацию:

[-]
View Code Bash
invoke-rc.d nginx reload

Для nginx 0.7.32 и выше есть другой вариант:

[-]
View Code nginx configuration
location ^~ /wp-content/uploads/ {
    types {
        text/plain php php3 php4 php5 phtml phps pl pm;
    }

    try_files $uri $uri/ @wordpress;
}

Как выглядит location @wordpress, можно прочитать здесь.

Всё просто!™

Автор: ; опубликовано в: nginx, WordPress, Безопасность; метки: nginx, upload, WordPress, безопасность
25
Фев
2009

RSS Комментарии к статье «WordPress + nginx: запрет выполнения PHP-файлов в uploads» (2)  »

  1. snews

    эх гуглю ищу для lighttpd такое решение ((
    спасибо за информацию.

  2. snews

    Для lighttpd, нашёл пока что только такое решение:

    [-]
    View Code Text
    $HTTP["host"] == "file.site.ru" {
        server.document-root = "/home/www/file/"
        dir-listing.activate = "disable"
        alias.url = ( "www.file.site.ru" => "/home/www/file/" )
        include "conf-available/mymtype"
        fastcgi.server = ()
    }

    file.site.ru — поддомен, для выдачи статики, загруженной юзерами;
    dir-listing.activate = "disable" — отключаем листинг;
    include "conf-available/mymtype"  — подключаем файл с mime-типами;
    fastcgi.server = () — тут указываются расширения файлов, которые должны обрабатываться FastCGI, оставил пустым.

    Методом тыка нашёл только такое решение, если кто знает удобнее вариант, напишите в коментах, пожалуйста.
    Таким образом я надеюсь, защитил себя от того, что загруженный юзером файл — upload, будет исполнятся как программа.

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «WordPress + nginx: запрет выполнения PHP-файлов в uploads»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा