发现 ECSHOP 页面缓存中存在的漏洞!

2016-07-07 15:11 来源:www.chinab4c.com 作者:ecshop专家

ECSHOPV2.5 将分页编号写入 cache_id 这样做的好处是可以将每一分页记录结果都缓存到文件(templates/caches);
但是 ECSHOP 并未阻止分页记录为空时页面的访问限制;因此会发生以下情况:
举例说当实际分页只有2页时,用户可以查看的只有2页,输入第3页时显示列表为空,看似没问题
但是因为 cache_id 不同该页面已经被缓存,如果我接着输入4、5、6……呢?这样就会制造很多的垃圾文件
虽然可以在后台清除缓存,但是我想一般的站点安装好了一上线肯定不会经常去清除缓存的吧

这样一来,利用 ECSHOP 该漏洞使用机器人就可以在已经开启了 cache 的站点上面一瞬间大量制造垃圾文件
让你的空间马上爆满甚至瘫痪~~(*^__^*) 嘻嘻…… 这想法可行么。。。试试去.......

cache.jpg

回答:
呵呵如果不加缓存的话他不断请求你的空白页的链接那就会造成频繁的sql查询
通常来说如果你是基于服务器级别来应用ecshop 的话,可以简单做一个shell或者crond都行
如果是基于虚拟主机你可以添加crond来运行清空缓存

ECSHOP lifetime 设定的是 3600 吧,这个只是更新文件而不是删除文件!
没错~~还有一个造成频繁的sql查询,这个还没试过。。。再去试一试。。。
早上试了一下......因为 safety 有 Clean Pipes 所以未能达到预期效果......不过成功制造了近千个垃圾文件......
我换另一种方法分页的页面肯定很多,我轮流换 URL 并且采用间隔性操作,又试试去......


不断请求你的空白页的链接又是问题(*-__-*)

这个问题是很严重的,我的网站一天时间该文件夹就产生了差不多3W个这样的文件,请求彻底解决办法.

没注意到这个问题

我在上面已经说过解决方案了
执行计划任务,清空缓存目录下的过期文件linux下可以用一个叫tmpwatch的小脚本或者自己写一个简单的shell即可
如果这两个都不会用,写一个简单的 小程序 包含 includes/lib_common.php程序执行函数clear_cache_files() 即可,也需要定时执行

楼上的,动粗了,bugii是很热心的.
毕竟他们的行为是收费的.
当然,有现成的程序出来更好.

以和为贵,别动粗口啦~~~
使用 shell 或者 clear_cache_files() 会清除全部缓存的,包括正常文件在内,这不是好办法。。。
我的解决办法是限制在3分钟内一个客户端只能有一次对空白页面的请求,并且此次请求不缓存。。。
这样就不会有垃圾文件也不会有不断请求你的空白页的链接等问题。。。
因为我的 cache 是无限时长而 EC 是默认 1 小时的这个不同所以我就不共享解决办法了。。。
对于2.5来说大概就是改一下分页函数即能实现,哪一天关注的人越多官方自然会重视的。。。


楼主提出来的问题确实很重要,我们会考虑对这个问题作出改进的。多谢支持

一直都在等解决的办法,但我编程能力不是一般的差,搞不来.请高手赐教!!

晕倒,技术支持不包含免费用户

我现在是需要每天都登录删除,不然一天就有50m的垃圾文件