Mojolicious и обход каталогов

Я новичок в 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;

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

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

я получаю файл .

Есть ли у mojolicious какая-либо возможность предотвратить такой обход каталога?

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

http:/mydomain:300/result

для обслуживания страницы, если кто-то введет этот URL:

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

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


person smith    schedule 18.11.2013    source источник


Ответы (1)


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

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

person mob    schedule 18.11.2013
comment
Прошу прощения, прежде чем вставить свой код, я изменил имена некоторых переменных, и у меня были опечатки, которые я исправил, выше приведен случай, о котором я говорю. - person smith; 19.11.2013
comment
Извините, я пересмотрел пост и код, возможно, все еще есть опечатки, так как английский не мой родной язык. - person smith; 19.11.2013