我是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
不应该提供该页面。 这样做是否可行?
答案 0 :(得分:0)
/$result^/
是一个正则表达式,如果你还没有定义标量变量$result
(它没有出现),它会解析为/^/
,它不仅匹配
http://mydomain:3000/result/./../result
但也
http://mydomain:3000/john/jacob/jingleheimer/schmidt
。
use strict
和use warnings
,即使在微小的网络服务上也是如此。