快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

关于ACCESS数据库安全

今天再次看到Access数据库安全的文章,每次看到这种文章就想说上两句,流行说法有几种:
一、密码式
  给数据库起一个随机复杂的名称,避免被猜到被下载,这种方法在以前很流行,因为大家都对自己的代码很有自信。但随着错误提示对数据库地址的泄露导致数据库被非法下载,这种方法也就越来越少人用了。
二、"#"式
  在数据库名称里加上#号,从URL上哀求时#是哀求地址和哀求参数的一个分隔字符,假如知道了数据库名,直接哀求的话,如:http: //www.xx.com/access#.mdb,WEB服务器会认为哀求的是access而不是access#.mdb,所以会提示找不到文件,但是很遗憾,URL中对于这些特别的字符都会有一个特别的表示方法,#的特别表示就是%23,如http://www.xx.com/access% 23.mdb,那么access#.mdb将会被下载。还有假如用FlashGet之类的下载工具也可以直接下载。
三、ASP式
  这种作法是比较专业但也是很安全的也是现在比较流行的作法,但是现在许多的人只是作了一半,只是将数据名改成ASP而以,这样的话直接用FlashGet之类的下载工具相同可以将数据库下载,这种方法的准确作法有两步:
  第一步:在数据库内创建一个字段,名称随意,类型是OLE对象,内容设置为单字节型的"<%",即(ASP代码chrB(asc("<")) & chrB(asc("%"))的运行结果)
  第二步:将数据库改名为ASP
  这样从URL上直接哀求这个数据库将会提示"缺少关闭脚本分隔符",从而拒绝下载,因为这个方法比较麻烦我在网上找了一段小代码来完成OLE对象的插入工作,只要将数据库名设置好,然后放在和数据库内一目录运行一下就可以了。
  代码全文数下:
<%
db="d.mdb" \\\'这里改成您的数据库地址
set conn=server.createobject("Adodb.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db)
conn.open connstr
conn.execute("create table notdownload(notdown oleobject)")
set rs=server.createobject("adodb.recordset")
sql="select * from notdownload"
rs.open sql,conn,1,3
rs.addnew
rs("notdown").appendchunk(chrB(asc("<")) & chrB(asc("%")))
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
  这段代码运行完之后将会在数据库内生成一个nodownload表,表内字段是notdown。假如数据库内已有同名的数据表存在请将代码内的nodownload改成自己想要的数据表名即可。
四、asa式
  这种方法的真谛是利用IIS对ASA文件的保护,从而使得数据库文件不能从URL上直接哀求下载,但是这种方法被误解成只要将文件后缀改成 ASA就可以了。要知道IIS只是对global.asa这个文件名有哀求保护,所以这种方法只能将数据库名设置为global.asa,而且要注重的是,设置成global.asa之后最好不要将其放在主机或虚拟目录的根目录里,不然会被IIS当然正常的global.asa文件进行尝试运行的。

感觉第三第四种是比较安全的,除非IIS有查看ASP或ASA源码的漏洞,否则是无法将数据库下载的。
返回类别: 教程
上一教程: 利用存储过程进行组合查询
下一教程: 使用XML帮助上传文件

您可以阅读与"关于ACCESS数据库安全"相关的教程:
· 关于用 ADO 创建 ACCESS 数据库
· 关于ACCESS数据库表改名的一段代码
· 关于将数据成批导入新数据库的程序例子(ACCESS TO SQL)
· ASP+Access数据库的终极安全方式18则
· ASP中数据库安全问题之我见
    微笑服务 优质保证 索取样品