PHP安全编程:防止源代码的暴露(转)
2024-09-14 14:22:57
关于包含的一个重要问题是源代码的暴露。产生这个问题主要原因是下面的常见情况:
- 对包含文件使用.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> |
虽然这些方法有其优点,但没有一个方法在安全性上能与把包含文件放在网站主目录之外的做法相比。不要依赖于上面的方法对你的应用进行保护,至多把它们当做深度防范来对待。
最新文章
- oracle分页查询sql
- spring 整合 ActiveMQ
- ansible的使用技巧
- 怎样打造一个分布式数据库——rocksDB, raft, mvcc,本质上是为了解决跨数据中心的复制
- Asp.Net验证码2
- 注册dll
- 即时通讯(IM)
- maven打包成第三方jar包且把pom依赖包打入进来
- 一天搞定HTML----列表标签03
- 原生javascript 制作canvas 验证码
- 洛谷 P3928 Sequence
- Java 开发, volatile 你必须了解一下
- Ansible安装及简单使用备注
- Linux IO模型(同步异步阻塞非阻塞等)的几篇好文章
- 3D模型网站分享
- SSM框架主要几个注解的位置
- windows异常事件对应的ID
- Android 开发 VectorDrawable 矢量图 (三)矢量图动画
- poj 2406 求字符串中重复子串的个数
- SSH框架搭建demo