日期:2013-10-07  浏览次数:21018 次

第二章 bak文件带来的灾难

/**
作者 :慈勤强
Email:cqq1978@Gmail.com
最后修改:2004-10-03
**/

一日,在网上与一朋友闲聊,朋友是做网站开发的,以前也与其讨论过技术方面的问题,

只是好久没有在网上见到了,就好像人间蒸发了一样。

“Steven,最近忙些什么呢?”,朋友先问到。

“没什么,在家下岗待业呢,呵呵”,我答道。

“哦,那正好,我们最近刚刚完成了一个政府部门的信息系统,现在正处于试运行阶段,

你看看,给点意见,^-^”,朋友回答道。

“你这家伙,我都下岗了,你也不安慰一下,呵呵”

“你还怕找不到工作呀,^-^”

“呵呵,那好,不过别忘记请客啊....”

......

一阵调侃之后,朋友把网址发了过来。


于是,我打开这个网站一看,很清新的一个网站,看起来简单但不失实用,朴素但不失

悦目,挺不错的。再看一下,这是一个用Asp编写的动态网站,那猜想数据库应该是SQL Server

的吧。

“不错啊,这不是挺好的吗?”我又回了朋友一句。

“还行吧,过两天就要验收了,^-^”

“哦,那你们项目组几个写程序的人啊?”

“3个人,做了三个月呢”,听得出来,他们还是倾注了不少的精力的。

“哦,那你们用什么开发工具,如何进行版本控制呀?”,我是比较关注项目过程的。

“嗨,不怕你笑话,我们根本就没有进行什么版本控制,每个人负责几个栏目,到时候

一拼就可以了。 我们就用Editplus开发asp。”


这么大个系统,竟然连基本的版本控制都没有,真是不可思议,也不知道他们是怎么

接到这个政府部门的项目的?


我暗自心想,突然想起了Editplus,这是一个非常小巧,实用的文本编辑器,我也一直

用它。可是对于Editplus,默认的情况下,它都会在当前目录下生成一个当前文件的备份,

比如你在写一个member.asp的程序,保存的时候,Editplus会自动生成一个备份文件,

member.asp.bak。所以在写完程序,往外发布的时候,如果没有完全删除这些备份文件,那么

隐患则是巨大的。


他们不会存在这个问题吧,我心想。

我边想,边顺手在一个正在访问的文件News.asp文件后面加上一个.bak,也就是我访问

的文件变成了http://网址/News.asp.bak, 回车一看,果不其然,这个文件的源代码

就显示了出来,部分代码如下:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="include/conn.asp" -->
<!--#include file="include/function.asp" -->
<%
这里是他们的asp源代码
%>

一看,就知道conn.asp是连接数据库的文件,那就看看他们用的什么数据库吧,访问

http://网址/include/conn.asp.bak,结果如下:

Call ConnectSQL()
Sub ConnectSQL()
Dim strSqlServer,strUserName,strPassword,strDatabase
Dim strConn
strSqlServer = "210.51.*.*"
strUserName = "sa"
strPassword = "!K)^$XN)*723L&%$fg6%^k"
strDatabase = "ZhenJin"

strConn = "Driver={SQL Server};Server=" + strSqlServer + ";UID=" + strUsername
strConn = strConn + ";pwd=" + strPassword + ";Database=" + strDatabase

Set objConn = Server.CreateObject("ADODB.CONNECTION")
objConn.Open strConn

End Sub

通过这个文件,可以看出来,他们真的用的Sql Server数据库,而且连接用户是SA,这可是

Sql Server的最高权限用户了,相当于系统的管理员权限。


看到这里,我就不忍心再往下看了,急忙跟朋友说明问题。


“你们写完程序,Editplus生成的bak文件怎么不删除呢?呵呵”,我问到。

“哦?不会存在这种低级问题吧,我做的都删除了啊?”,朋友吃惊的回答到。

“那其他人写的呢?你们系统做完了,不会连自己都没有测试吧?”

“哦,那可能是别人没有注意吧,我们只是进行了简单的功能测试,时间太紧了”

..........

是啊,时间太紧了,给我的感觉是现在的项目没有一个时间不紧的。现在好多网络公司作出来的

项目甚至连自己都没有进行很好的QA测试,就拿出来给客户了,客户发现问题,再提出来,他们再改。

实际上从长远来讲,这样是得不偿失的。