关于包含的一个重要问题是源代码的暴露。产生这个问题主要原因是下面的常见情况:

  • 对包含文件使用.inc的扩展名
  • 包含文件保存在网站主目录下
  • Apache未设定.inc文件的类型
  • Apache的默认文件类型是text/plain

上面情况造成了可以通过URL直接访问包含文件。更糟的是,它们会被作为普通文本处理而不会被PHP所解析,这样你的源代码就会显示在用户的浏览器上。

避免这种情况很容易。只能重组你的应用,把所有的包含文件放在网站主目录之外就可以了,最好的方法是只把需要公开发布的文件放置在网站主目录下。

虽然这听起来有些疯狂,很多情形下能导致源码的暴露。我曾经看到过Apache的配置文件被误写(并且在下次启动前未发现),没有经验的系统管理员升级了Apache但忘了加入PHP支持,还有一大堆情形能导致源码暴露。

通过在网站主目录外保存尽可能多的PHP代码,你可以防止源代码的暴露。至少,把所有的包含文件保存在网站主目录外是一个最好的办法。

一些方法能限制源码暴露的可能性但不能从根本上解决这个问题。这些方法包括在Apache中配置.inc文件与PHP文件一样处理,包含文件使用.php后缀,配置Apache不能接受对.inc文件的直接请求:

1 <Files ~ "\.inc$">
2     Order allow,deny
3     Deny from all
4 </Files>

虽然这些方法有其优点,但没有一个方法在安全性上能与把包含文件放在网站主目录之外的做法相比。不要依赖于上面的方法对你的应用进行保护,至多把它们当做深度防范来对待。

最新文章

  1. oracle分页查询sql
  2. spring 整合 ActiveMQ
  3. ansible的使用技巧
  4. 怎样打造一个分布式数据库——rocksDB, raft, mvcc,本质上是为了解决跨数据中心的复制
  5. Asp.Net验证码2
  6. 注册dll
  7. 即时通讯(IM)
  8. maven打包成第三方jar包且把pom依赖包打入进来
  9. 一天搞定HTML----列表标签03
  10. 原生javascript 制作canvas 验证码
  11. 洛谷 P3928 Sequence
  12. Java 开发, volatile 你必须了解一下
  13. Ansible安装及简单使用备注
  14. Linux IO模型(同步异步阻塞非阻塞等)的几篇好文章
  15. 3D模型网站分享
  16. SSM框架主要几个注解的位置
  17. windows异常事件对应的ID
  18. Android 开发 VectorDrawable 矢量图 (三)矢量图动画
  19. poj 2406 求字符串中重复子串的个数
  20. SSH框架搭建demo

热门文章

  1. 页面加载完成,但ie进度条一直加载
  2. scons小结
  3. ubantu下重启apache
  4. PHP随机生成指定时间段的指定个数时间
  5. day2练习题
  6. .NET 元数据
  7. oracle 对象权限 系统权限 角色权限
  8. js plugin
  9. Ext.js form 表单提交问题
  10. 【木德木作杯楼市达人秀NO.28】南湖买房故事