新手asp编程的基本法则与常见错误注意事项(3)



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

3:数据库名前加“#”
只需要把数据库文件前名加上#、然后修改数据库连接文件(如conn.asp)中的数据库地址。原理是下载的时候只能识别 #号前名的部分,对于后面的自动去掉,比如你要下载:http://bbs.bccn.net/date/#123.mdb(假设存在的话)。无论是IE还是FLASHGET等下到的都是http://bbs.bccn.net/date/index.htm

另外在数据库文件名中保留一些空格也起到类似作用,由于HTTP协议对地址解析的特殊性,空格会被编码为"%20",如http://bbs.bccn.net/date/123 456.mdb
下载时http://bbs.bccn.net/date/123%20456.mdb。而我们的目录就根本没有123%20456.mdb这个文件,所以下载也是无效的,即使你暴露了数据库地址,一般情况下别人也是无法下载,最好两种方法同时使用“#”+空格,例如 http://bbs.bccn.net/date/#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/#123 456.mdb" 的形式,这样数据库可以正常调用,但是无法下载的,因为它不在WEB目录里!这个方法一般也适合购买虚拟空间的用户。

6:使用ODBC数据源。
在ASP等程序设计中,如果有条件,应尽量使用ODBC数据源,不要把数据库名写在程序中,否则,数据库名将随ASP源代码的失密而一同失密
例如:
conn.open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("../123/abc/asfadf.mdb")

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2723.html