发现用nginx 的try_files $uri $uri/ /index.php$is_args$args; 这样重写不太安全
高洛峰
高洛峰 2017-04-10 18:03:08
[PHP讨论组]

这是我的项目结构:


用以上方法重写的话:
如果输入www.***.com/app/*.php,这样的话,虽然代码执行不成功,但是就能知道存在这样的文件(可以猜文件了)

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
高洛峰

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

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

阿神

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

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

ringa_lee

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号