1

我是 Mojolicious 的新手,正在尝试使用这个框架构建一个小型 Web 服务,我编写了下面的代码来远程渲染一些文件

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

不应提供该页面。可以这样做吗?

4

1 回答 1

0

/$result^/是一个正则表达式,如果你没有定义标量变量$result(它看起来你没有),它解析为/^/,它不仅匹配 http://mydomain:3000/result/./../result而且 匹配http://mydomain:3000/john/jacob/jingleheimer/schmidt.

use strict并且use warnings,即使在微小的网络服务上。

于 2013-11-18T20:22:29.520 回答