ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Проблема с if (-x $request_filename)



Спасибо, Максим!
Это сработало.
Вы в курсе, ожидать ли официальный патч на эту багофичу?


Maxim Dounin пишет:
Hello!

On Mon, Nov 02, 2009 at 03:02:50PM +0300, TJ@xxxxxx wrote:

Приветствую!


Кусок конфига (ссылка на доки
http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html):
..
               location /chkimg/
               {
                       root /var/projects/www/test;

                       log_format      imgtestlog
                           '"$request" $status $body_bytes_sent '
                           '"$http_referer" "$chk_img"
"$request_filename"';

                       access_log      /var/log/nginx/imgtest.log
imgtestlog;

                       if (-x $request_filename)
                       {
                               set $chk_img 1;
                       }

                       if ($chk_img)
                       {
                               return 403;
                       }
               }
..

При запросе файла (картинки jpeg) с установленным аттрибутом
исполнения (chmod +x) - эффект нулевой, т.е. отдается содержимое
файла. В логе - правильный request_filename и пустая $chk_img.
Соответственно ожидаемо отдается файл без такого аттрибута.

Подобная ситуация, когда -x заменяю на !-x и запрашиваю файл с
аттрибутом +x и файл без такового - в обоих случаях ошибка 403.

Ради чистоты эксперимента заменил -x на -e - сразу же получаю 403
ошибку и в логе $chk_img равна 1.

Проблема пришла из дебиана и nginx/0.6.32. Решил проверить на
рабочей тачке с гентой и nginx посвежее nginx/0.7.59, gentoo linux.

В чем траблы?

Сюрприз: в данном случае виноват не if() сам по себе. :)

Патч.

Maxim Dounin



 




Copyright © Lexa Software, 1996-2009.