2013-11-18 2 views
1

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

use Mojolicious::Lite; 
use strict; 
use warnings; 



app->static->paths->[0]='C:\results'; 
    get '/result' => sub { 

     my $self = shift; 
     my $headers = $self->res->headers; 
     $headers->content_type('text/zip;charset=UTF-8'); 

     $self->render_static('result.zip'); 

    }; 

    app->start; 

но мне кажется, когда я пытаюсь принести файла, используя следующий адрес:

http://mydomain:3000/result/./../result 

Я достал файл.

Есть ли какой-либо вариант на mojolicious, чтобы предотвратить такой обход каталога?

т.е. в приведенном выше случае я хочу только

http:/mydomain:300/result 

служить страницу, если кто-то введите этот адрес:

http://mydomain:3000/result/./../result 

страницы не должны обслуживаться. Можно ли это сделать?

ответ

0

/$result^/ является регулярным выражением, и если вы не определили переменную скалярного $result (который он не появляется у вас есть), он решает /^/, который соответствует не только http://mydomain:3000/result/./../result но и http://mydomain:3000/john/jacob/jingleheimer/schmidt.

use strict и use warnings, даже на крошечных веб-сервисах.

+0

Прошу прощения, прежде чем вставить свой код. Я изменил некоторые имена переменных, и у меня были опечатки, я исправил его, это выше, я говорю о – smith

+0

. Код и сообщение все еще пронизаны опечатками. – mob

+0

Извините, я просмотрел сообщение и код, это mybe все еще некоторые опечатки, поскольку английский не в моем первом языке – smith

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