【nginx】发现用nginx 的try_files $uri $uri/ /index.php$is_args$args; 这样重写不太安全

这是我的项目结构:

【nginx】发现用nginx 的try_files $uri $uri/ /index.php$is_args$args; 这样重写不太安全
用以上方法重写的话:
如果输入www.***.com/app/*.php,这样的话,虽然代码执行不成功,但是就能知道存在这样的文件(可以猜文件了)

当然我知道现在的有些框架(laravel)有种做法是:index.php和前端资源文件放入public文件夹中(网站root配到public下面)

回答

最简单的办法是在与try_files同级的地方写一条root限制这个try_files作用位置。

try_files按其后面的参数顺序检查文件是否存在,返回第一个找到的文件,必然会碰到题主这种安全问题,参考主流框架laravel之类的做法写最省事。

要明白即使用 rewrite 最终效果也是类似的。

因为网站根目录底下的所有文件本身就是应该全部可访问的(或部分不能访问,通过设置强行过滤,比如 .htaccess 文件)。

你可以把整个项目放到一个目录下,比如20161208,然后修改为

try_files $uri $uri/ /20161208/index.php$is_args$args;

以上是 【nginx】发现用nginx 的try_files $uri $uri/ /index.php$is_args$args; 这样重写不太安全 的全部内容, 来源链接: utcz.com/a/84088.html

回到顶部