为什么安装根目录不用官方推荐的public目录呢?

我记得tp5的官方说为了安全,建议安装目录在public。
今天看这个系统,为什么不遵守这个约定,是有些地方不好调节吗?我记得WechatSdk的例子也是这样,看了很不舒服。以前我用他的例子的时候自己改过来了,现在来看这个又是这样。这是为什么呢?你们这样搞的方便之处在哪里?
已邀请:

geeson

赞同来自:

你这个问题其实问得是非常好的,我们也有几次的重构版本了,在第其中一次重构就是因为版本是在入口public中,但是最后遇上比较多的问题。后台我参考一些 TP5的大中型商城系统与类似相关系统很多都在入口都是没有在public中的。但是还是可以放心的,在安装rhaphp教程中已经提到了自定你的缓存目录,就算攻击者要偿试攻击系统也首先要知道你的缓存目录与缓存的 KEY 才能对你攻击,如果还感觉还是不够安全你再设置你的缓存的前缀。做任何一个系统之前,首先就是要考虑到安全的问题,案例不足就算多好多牛X 的产品也没有人敢用,对吧?

kiti - 一个90的程序嫒

赞同来自:

记得是在5.0.10基本就可以告别public作为运行目录了。TP 官方在《TP缓存缺陷漏洞》中官方在文章中是这样说的:


官方再次申明,框架设计之初已经考虑到了这个问题,无论3.2还是5.0版本都提供了解决方案,所以不存在什么文中所述漏洞,不要造成无谓的恐慌。ThinkPHP5.0 的手册和快速入门均有提及如何部署,就算你没有按照官方的建议部署,攻击者也需要猜测你的缓存 Key 才能实施攻击。

如果你仍然不放心,可以采用下面的解决方案:
- TP3.2 设置:DATA_CACHE_KEY 参数
- TP5 按照官方的部署建议做好目录权限,除公共目录绝对不要让外部可访问
- TP5 在缓存目录可以对外访问的情况下也可以设置缓存前缀参数(prefix)
 


如果是仍然不放心的情况下,你可以部署在public中,自定你的目录一样是可以达到这样的效果。

jinmandou - 麻水人家,麻水特产有售。蜜柚之乡

赞同来自:

再来反映个小问题。我本来是本地安装试了下觉得可以才放到服务器,装上后发现遇到分页的就报错了,看了下原来是你们自己建了一个layui的分页库。调用的那个。我服务器上是用的tp0.12最新的。我的建议是最好不要动tp本身的东西,扩展库就放到扩展库里。我现在就是这样,把那个layui.php文件放到了extend\think\paginator\driver 这目录,以后tp框架随时可以换,不用担心掉东西。
试了下粉丝同步和图片同步,我是认证的服务号,非常好用,很棒。可是图片同步过来不显示。估计是我哪里改出问题了,继续看源码研究中。谢谢开源。

geeson

赞同来自:

同时也希望你把这个问题,发布一个新的问题,这样可以帮助到更多的人

该问题目前已经被锁定, 无法添加新回复