本帖最后由 Bobby 于 2013-12-6 21:55 编辑
通过半年来对CodeIgniter框架的学习以及针对项目碰到的一些问题,产生了一点点心得,于是决定总结下这段时间对CodeIgniter的认识,先从目录结构说起吧。 CodeIgniter框架已帮我们配置好了项目目录结构,来看看Codeigniter的目录结构:
index.php: CodeIgniter单一入口文件。
system: 框架目录,Codeigniter核心文件和自带的类库、函数等。
application: 应用目录,包括控制器、模型、配置、类库等等,所有的PHP代码都写在该目录中。 CI提供的默认结构可能是最方便、快速的,但不一定是最好的,可以看到入口文件和application、system目录处于同一级别,这意味着web目录也可以访问到application、system中的内容。虽然CI对每个目录做了.htaccess限制,但依然存在潜在的危险。可能由于服务器配置的不完善导致某些目录可以被访问到。并且随着开发的不断进行,我们可能会在每一个目录中放一些文件,即便根目录,当这些不该被访问到的文件成为可能时,潜在的危险就存在了。 那如何调整? 其实很简单,可以把静态资源和入口文件放在一起,application和system放置在web目录之外,参考下图:
调整之后所有需要外部可访问的图片、样式、脚本等就都放在public目录下即可。那Codeigniter为什么还这么放呢?目录的调整需要有相关的权限才行,如果服务器没调整的权限,那就不行了。CI本身也提倡把应用和框架放在根目录之外。 所以,不该让用户访问到的文件坚决不让用户存在访问的可能性。 最后回头看看自己的项目,日志文件是否乱放而且在可访问的目录下,不该访问到的缓存、模版文件是否都可以访问到,一些备份的文件是否也直接在根目录下? |