thinkphp的一个小BUG

php中文网
发布: 2016-06-23 14:11:30
原创
1106人浏览过

前两天发现自己网站莫名其妙的多了一下文件
原文地址:http://bbs.csdn.net/topics/390469279

今早观察了一下这些莫名其妙的HTML文件,终于找到问题所在!!!
原因:
如果开启静态缓存,在静态规则中带有参数,例如

//静态缓存	'HTML_CACHE_ON'=>true,	'HTML_CACHE_RULES'=> array(	'infor:search' => array('home/{:module}/{:action}/{key}'),	),
登录后复制


举例说明
{key}=test
Html/home/Infor/search/test.html
{key}=../boot
Html/home/Infor/boot.html
是的第二个静态文件HTML飞到了上级目录,所以服务器目录多了很多文件和文件夹。
这个应该算是thinkphp的一个小BUG,虽然不会对网站照成危害但是很烦人

解决的方法也很简单
就是静态规则不要直接用参数,推荐大家用MD5处理{$_SERVER.REQUEST_URI|md5}

机智的?丝

小门道AI
小门道AI

小门道AI是一个提供AI服务的网站

小门道AI 117
查看详情 小门道AI

回复讨论(解决方案)

过来看看,静态缓存用的比较少。

这不是 thinkphp 的 bug
很自然的你要为你自己的行为负责

对于你示例的规则,若 key = ../boot
由 $rule  = preg_replace('/{(w+)}/e',"$_GET['\1']",$rule);
可知,被解释成 home/MODULE_NAME/ACTION_NAME/../boot

TP 有什么理由要阻止你把静态文件放在上级目录中?

这不是 thinkphp 的 bug
很自然的你要为你自己的行为负责

对于你示例的规则,若 key = ../boot
由 $rule  = preg_replace('/{(w+)}/e',"$_GET['\1']",$rule);
可知,被解释成 home/MODULE_NAME/ACTION_NAME/../boot

TP 有什么理由要阻止你把静态文件放在上级目录中?

我觉得TP应该考虑一下{key}参数的过滤。

如果要过滤,也得是你给规则、写代码
至少类似 http://bbs.csdn.net/topics/390469279/..x 这样的url并不能构成攻击
你不能指望人家把什么都替你做了,毕竟他只是个开发工具。
如果是 dede 出现这种现象,才能说是 bug

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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