最近对一轻型数据库很感兴趣——“SQLite”

SQLite

1、SQLite简介
SQLite第一个Alpha版本诞生于2000年5月. 至今已经有4个年头了. 而在今年的5月SQLite也迎来了一个新的里程: SQLite 3. SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
查看全文…

受不了了,一口气都删了!

       今天实在是受不了了,看着BLOG里已经有几百条的垃圾引用,搞得我的数据库大了好几百K,用PJ论坛里提供的批量删贴插件一口气把前十几页的引用通告都DEL了,最后一页是建站初期的引用,都是些真实有效的所以还留着但也只制7条了。回到主页一看,晕~~~引用统计栏居然显示还有60条,无语~~~~
        顺便记一下,今天是武汉本年度最热的一天,具体温度个人感觉应该有40度以上^_^

防止数据库被下载的几个方法

前言:很多动态站点大量应用了数据库,数据库理所当然成了一个站点的核心文件。一旦数据库被人下载,极有可能被恶意人士破坏网站。或者窃取资料。实在痛心啊。有什么方法可以防止数据库被人下载呢?

下面提供的的方法分别适用使用虚拟主机空间的用户和有IIS控制权的用户!
一:购买虚拟主机空间的,适合没有IIS控制权

1:发挥你的想象力 修改数据库文件名
这个是最基本的。我想现在也没有多少连数据库文件名都懒得改的人吧? 至于改成什么,你自己看着办,至少要保证文件名复杂,不可猜测性。当然这个时候你的数据库所在目录是不能开放目录浏览权限的!

2:数据库名后缀改为ASA、ASP等
这个听说很流行,不过我测试了好多次,发现并不理想,如果真正要起到防止下载的作用,要进行一些2进制字段添加等设置,—一句话,繁而复杂(如果你的数据库有很多的话,这个方法实在不是很好)

3:数据库名前加“#”
只需要把数据库文件前名加上#、然后修改数据库连接文件(如conn.asp)中的数据库地址。原理是下载的时候只能识别 #号前名的部分,对于后面的自动去掉,比如你要下载:http://www.pcdigest.com/date/index.htm(index.asp、default.jsp等你在IIS设置的首页文档)” target=_blank>http://www.pcdigest.com/date/#123.mdb(假设存在的话)。无论是IE还是FLASHGET等下到的都是http://www.pcdigest.com/date/index.htm(index.asp、default.jsp等你在IIS设置的首页文档)
另外在数据库文件名中保留一些空格也起到类似作用,由于HTTP协议对地址解析的特殊性,空格会被编码为”%”,如http://www.pcdigest.com/date/123 456.mdb,下载的时http://www.pcdigest.com/date/123%456.mdb。而我们的目录就根本没有123%456.mdb这个文件,所以下载也是无效的这样的修改后,即使你暴露了数据库地址,一般情况下别人也是无法下载!

4:加密数据库
用ACCESS将你的数据库以独占方式打开后,在工具-安全-设置数据库密码,加密后要修改数据库连接页, 如:
conn.open “driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq=数据库路径”
这样修改后,数据库即使被人下载了,别人也无法打开(前提是你的数据库连接页中的密码没有被泄露)
但值得注意的是,由于Access数据库的加密机制比较简单,即使设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行“异或”来形成一个加密串,并将其存储在*.mdb文件从地址“&H42”开始的区域内。所以一个好的程序员可以轻松制作一个几十行的小程序就可以轻松地获得任何Access数据库的密码。因此,只要数据库被下载,其信息安全依然是个未知数。

二:有主机控制权 (当然虚拟空间的设置在这里依然可以用)
5:数据库放在WEB目录外
如你的WEB目录是e:\webroot,可以把数据库放到e:\data这个文件夹里,在e:\webroot里的数据库连接页中
修改数据库连接地址为:”../data/数据库名” 的形式,这样数据库可以正常调用,但是无法下载的,因为它不在WEB目录里!这个方法一般也不适合购买虚拟空间的用户。

6:使用ODBC数据源。
在ASP等程序设计中,如果有条件,应尽量使用ODBC数据源,不要把数据库名写在程序中,否则,数据库名将随ASP源代码的失密而一同失密,例如: DBPath = Server.MapPath(“../123/abc/asfadf.mdb ”)
conn.open “driver={Microsoft Access Driver (*.mdb)};dbq=”& DBPath
可见,即使数据库名字起得再怪异,隐藏的目录再深,ASP源代码失密后,也很容易被下载下来。如果使用ODBC数据源,就不会存在这样的问题了: conn.open “ODBC-DSN名” ,不过这样是比较烦的,目录移动的话又要重新设置数据源了,更方便的方法请看第7,8法!

7:添加数据库名的如MDB的扩展映射
这个方法就是通过修改IIS设置来实现,适合有IIS控制权的朋友,不适合购买虚拟主机用户(除非管理员已经设置了)。这个方法我认为是目前最好的。只要修改一处,整个站点的数据库都可以防止被下载。无须修改代码即使暴露目标地址也可以防止下载,如图1、2设置:

此主题相关图片如下:

我们在 IIS属性—主目录—配置—映射—应用程序扩展那里添加.mdb文件的应用解析。注意这里的选择的DLL(或EXE等)似乎也不是任意的,选择不当,这个MDB文件还是可以被下载的, 注意最好不要选择选择asp.dll等。你可以自己多测试下
这样修改后下载数据库如:http://192.168.1.5/HaoBbs/data/dvbbs6.mdb。就出现(404或500等错误)

8:使用.net的优越性
动网的木鸟就写过一个防非法下载文件的“WBAL 防盗链工具”。具体可以登陆http://www.9seek.com/WBAL/
不过 那个只实现了防止非本地下载的 ,没有起到真正的防下载数据库的功能。不过这个方法已经跟5法差不多
可以通过修改.NET文件,实现本地也不能下载!

这几个方法中,只有第7和8个是统一性改的,一次修改配置后,整个站点的数据库都可以防止下载,其他几个就要分别修改数据库名和连接文件,比较麻烦,不过对于虚拟主机的朋友也只能这样了!

其实第6个方法应该是第5个方法的扩展,可以实现特殊的功能,但对于不支持.net的主机或者怕设置麻烦的话,还是直接用第5个方法了,而且默认情况下第6个方法,依然可以通过复制连接到同主机的论坛或留言本发表,然后就可以点击下载了(因为这样的引用页是来自同主机的)

这几个方法各有长短,请自己选择性地使用。这些方法也不是绝对的安全,还需要网站管理员平时注意一些系统的安全,以及写ASP/ASP.NET/JSP代码本身的安全 ,否则依然是有可能被人下载或者修改数据库的。

Access数据库的存储上限

Microsoft Access 数据库 (.mdb) 文件大小 2G 字节减去系统对象所需的空间。
  数据库中的对象个数 32,768
    模块(包括“内含模块”属性为“是”的窗体和报表) 1,000
    对象名称中的字符数 64
    密码的字符个数 14
    用户名或组名的字符个数 20
    并发用户的个数 255
    
    
    
    属性 最大值
    表名的字符个数 64
    字段名的字符个数 64
    表中字段的个数 255
    打开表的个数 2048;实际可打开的表的数目可能会少一些,因为 Microsoft Access 还要打开一些内部的表。
    表的大小 2G 字节减去系统对象所需的空间
    “文本”字段的字符个数 255
    “备注”字段的字符个数 通过用户界面输入为 65,535;以编程方式输入时为 1G 字节的字符存储。
    “OLE 对象”字段的大小 1G 字节
    表中的索引个数 32
    索引中的字段个数 10
    有效性消息的字符个数 255
    有效性规则的字符个数 2,048
    表或字段说明的字符个数 255
    记录的字符个数(除“备注”字段和“OLE 对象”字段外) 2,000
    字段属性设置的字符个数 255
    
    查询
    
    属性 最大值
    实施关系的个数 每个表为 32 减去表中不包含在关系中的字段或字段组合的索引个数
    查询中的表的个数 32
    记录集中的字段个数 255
    记录集大小 1G 字节
    排序限制 255 个字符(一个或一个以上字段)
    嵌套查询的层次数 50
    查询设计网格一个单元格中的字符个数 1,024
    参数查询的参数字符个数 255
    Where 或 HAVING 子句中 AND 的个数 99
    SQL 语句中的字符个数 约为 64,000
    
    窗体和报表
    
    属性 最大值
    标签中的字符个数 2,048
    文本框中的字符个数 65,535
    窗体或报表宽度 22 英寸(55.87 厘米)
    节高度 22 英寸(55.87 厘米)
    所有节加上节页眉的高度(在“设计”视图中) 200 英寸(508 厘米)
    窗体或报表的最大嵌套层数 7
    报表中可作为排序或分组依据的字段或表达式个数 10
    报表中页眉和页脚的个数 1 对报表页眉/报表页脚,1 对页面页眉/页面页脚,10 对组页眉/组页脚
    报表的打印页数 65,536
    可添加到窗体或报表的控件和节的个数 754
    SQL 语句中作为窗体、报表或控件的“记录源”或“行来源”属性的字符个数(适用于 .mdb 和 .adp) 32,750
    
    
    
    属性 最大值
    宏中的操作个数 999
    条件中的字符个数 255
    备注中的字符个数 255
    操作参数中的字符个数 255
  

    Microsoft Access 项目规格
    Access 项目

    
    属性 最大值
    Microsoft Access 项目 (.adp) 中的对象数目 32,768
    模块(包括“内含模块”属性为“是”的窗体和报表) 1,000
    对象名称中的字符数 64
    表中的索引个数 250 (Microsoft SQL Server 6.5)
    1024(Microsoft SQL Server 7.0 和 2000)

    

    Microsoft SQL Server 数据库

    
    SQL Server 文档中描述了 Microsoft SQL Server 最大容量规格。有关 SQL Server 联机丛书的详细信息,请参见 Microsoft Developer’s Network Web 站点。

    
    注意 使用该主题中的超链接会跳转到 Web 上,但随时可以切换回“帮助”。

    
    窗体和报表

    
    属性 最大值
    标签中的字符个数 2,048
    文本框中的字符个数 65,535
    窗体或报表宽度 22 英寸(55.87 厘米)
    节高度 22 英寸(55.87 厘米)
    所有节加上节页眉的高度(在“设计”视图中) 200 英寸(508 厘米)
    窗体或报表的最大嵌套层数 7
    报表中可作为排序或分组依据的字段或表达式个数 10
    报表中页眉和页脚的个数 1 对报表页眉/报表页脚,1 对页面页眉/页面页脚,10 对组页眉/组页脚
    报表的打印页数 65,536
    可添加到窗体或报表的控件和节的个数 754
    SQL 语句中作为窗体、报表或控件的“记录源”或“行来源”属性的字符个数(适用于 .mdb 和 .adp) 32,750

    
    

    
    属性 最大值
    宏中的操作个数 999
    条件中的字符个数 255
    备注中的字符个数 255
    操作参数中的字符个数 255

刚才不小心把这两天的数据都DEL了!

刚才备份数据库的时候不小心把这两天的数据都DEL了 ,真要命啊,幸好时间不长,我大概都还记得有哪些内容。这次是个教训,已后要经常备份了!