导读:大项目做模块化文件分离,我不知道书中所指是物理分离还是逻辑分离。
在《代码整洁之道》中提到,代码的物理分离远比逻辑分离要有价值。
使用*_once 代替inldue 和 require。
详细:
1 源码暴露
代码暴露的原因有:
-对包含的文件使用.inc的扩展名
-包含文件保存在网站的注目录下
-web server未设定.inc文件的类型
-web server的默认文件类型是text/plain
而这些情况下,都是可以通过URL直接访问包含文件的。解决方案有:
-将所有的包含文件放置在应用目录之外
-配置web server限制.inc文件的解析
推荐使用第一种方案。(我现在工作的环境就是使用了这一方案,但是,包含方案设定不合理,给开发带来了巨大的阻碍。)
2 后门URL
后门URL是指虽然无需直接调用的资源能直接通过URL访问。
这么做是因为应用不是单入口的。如果是单入口就可以很好的避免这个问题。
3 文件名操纵
如下面的代码:
include_once '/cache/' . $_GET['username'] . '.html';
所以,不要使用用户输入去包含一个文件。
4 代码注入
这就是没有过滤用户输入的另一个特别危险的做法。记住:
任何用户输入都要做过滤。