access数据库教程

知识博客专集

关于asp access存在的安全隐患及其解决方案


本文章提供给大家分享学习的是一个作者的小经验之谈,是关于asp access存在的安全隐患及其解决方案,以下仅供参考,如有不足,还望指正。

众所周知,asp access最大的安全隐患在于access数据库可以被别人下载,而现在提供的很多asp空间都是只支持access数据库,这样一来,asp access的安全问题就显得很突出了。

  1.access数据库的存储隐患
  在asp+access应用系统中,如果获得或者猜到access数据库的存储路径和数据库名,则该数据库就可以被下载到本地。

  2.access数据库的解密隐患

  由于access数据库的加密机制非常简单,所以即使数据库设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行异或来形成一个加密串,并将其存储在*.mdb文件中从地址“&h42”开始的区域内。由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.mdb文件中的加密串进行第二次异或操作,就可以轻松地得到access数据库的密码。基于这种原理,可以很容易地编制出解密
  程序。
  
  由此可见,无论是否设置了数据库密码,只要数据库被下载,其信息就没有任何安全性可言了。
  
  3.程序设计中的安全隐患  
  asp代码利用表单(form)实现与用户交互的功能,而相应的内容会反映在浏览器的地址栏中,如果不采用适当的安全措施,只要记下这些内容,就可以绕过验证直接进入某一页面。例如在浏览器中敲入“…… page.asp?x=1”,即可不经过表单页面直接进入满足“x=1”条件的页面。因此,在设计验证或注册页面时,必须采取特殊措施来避免此类问题的发生。
  
  ==========
  解决方案
  ==========
  
  提高数据库的安全性

  由于access数据库加密机制过于简单,因此,如何有效地防止access数据库被下载,就成了提高asp+access解决方案安全性的重中之重。
  
  1.非常规命名法

  防止数据库被找到的简便方法是为access数据库文件起一个复杂的非常规名字,并把它存放在多层目录下。例如,对于网上书店的数据库文件,不要简单地命名为“book.mdb”或“store.mdb”,而是要起个非常规的名字,例如:faq19jhsvzbal.mdb,再把它放在如./akkjj16t/kjhgb661/acd/avccx55 之类的深层目录下。这样,对于一些通过猜的方式得到access数据库文件名的非法访问方法起到了有效的阻止作用。
  
  2.使用odbc数据源
  在asp程序设计中,应尽量使用odbc数据源,不要把数据库名直接写在程序中,否则,数据库名将随asp源代码的失密而一同失密。例如:
  dbpath = server.mappath(“./akkjj16t/
  kjhgb661/acd/avccx55/faq19jhsvzbal.mdb ”)
  conn.open “driver={microsoft access driver (*.mdb)};dbq=” & dbpath

  可见,即使数据库名字起得再怪异,隐藏的目录再深,asp源代码失密后,数据库也很容易被下载下来。如果使用odbc数据源,就不会存在这样的问题了:
  conn.open “odbc-dsn名”

  对asp页面进行加密

  为有效地防止asp源代码泄露,可以对asp页面进行加密。一般有两种方法对asp页面进行加密。一种是使用组件技术将编程逻辑封装入dll之中;

  另一种是使用微软的script encoder对asp页面进行加密。但是,使用组件技术存在的主要问题是每段代码均需组件化,操作比较烦琐,工作量较大;而使用script encoder对asp页面进行加密,操作简单、收效良好。

  script encoder方法具有许多优点:
  
  ⑴.html仍具有很好的可编辑性。script encoder只加密在html页面中嵌入的asp代码,其他部分仍保持不变,这就使得我们仍然可以使用frontpage或dreamweaver等常用网页编辑工具对html部分进行修改、完善,只是不能对asp加密部分进行修改,否则将导致文件失效。

  ⑵.操作简单。只要掌握几个命令行参数即可。script encoder的运行
  程序是screnc.exe,其使用方法如下:
  screnc [/s] [/f] [/xl] [/l deflanguage ] [/e defextension] inputfile outputfile
  其中的参数含义如下:
  s:屏蔽屏幕输出;
  f:指定输出文件是否覆盖同名输入文件;
  xl:是否在.asp文件的顶部添加@language指令;
  l:deflanguag指定缺省的脚本语言;
  e:defextension 指定待加密文件的扩展名。
  ⑶.可以批量加密文件。使用script encoder可以对当前目录中的所有的asp 文件进行加密,并把加密后的文件统一输出到相应的目录中。例如:
  screnc *.asp c:\\temp
  ⑷. script encoder是免费软件。该加密软件可以从微软网站下载:
  http://msdn.microsoft.com/scripting/vbscript/download/x86/sce10en.exe。下载后,运行安装即可。
  
  利用session对象进行注册验证

  为防止未经注册的用户绕过注册界面直接进入应用系统,可以采用session对象进行注册验证。session对象最大的优点是可以把某用户的信息保留下来,让后续的网页读取。
  
  3.改数据库扩展名

  你也可以将数据库的扩展名改为.asp,当然在定位数据库的时候也要用类似database.asp的文件名,这样数据库不会被轻易的下载,而数据还可以正常的读出写入。
  
  4.向数据库内加错误的asp代码

  如果以为做完第3项以后就万事大吉了那就错了,虽然数据库的扩展名变成了.asp,但是当对方猜到了你的数据库路径以后还是可以下载的,只不过慢了一些,对方可以等页面完全打开以后“另存为”就可以了。要解决这个问题可以载数据库内添加错误的asp代码。你可以先建立一个隐藏表,表内只有一列,并且插入这样一行:
  
  这样一来对方打开数据库的页面时就只会出现asp脚本的错误信息,而不会下载你的数据库了。
  
  5.对于程序设计中隐患的解决一例

  大多数人都认为网站只要加了登录密码就无法正常进入了。而请您看下面的验证语句:
  
  sql="select uname,pwd from uinfo where "
  sql=sql&"uname='"&request.form("uname")&"'"
  sql=sql&" and pwd='"&request.form("pwd")&"'"
  rs.open sql,conn,1,1
  if rs.eof or rs.bof then
  response.write "对不起,错误的用户名/密码!"
  else
  response.write "登录成功!"
  end if
  
  可能已经有读者看出来了这段代码是十分危险的,只要对方知道用户名就可以登录,你可以在密码框里输入“' or '1'='1”就可以了,其原理很简单,就是利用了sql查询语句,大家注意,用此方法提交以后的sql语句变成了:(如果用户名为administrator)

  select uname,pwd from uinfo where uname='administrator' and pwd='' or '1'='1'

  如果用户名administrator存在的话那么这个记录是可以被选出来的,之后当然就是可以正常登录了。
  
  解决方案:
  
  sql="select uname,pwd from uinfo where "
  sql=sql&"uname='"&request.form("uname")&"'"
  rs.open sql,conn,1,1
  if rs.eof or rs.bof then
  response.write "对不起,本站没有此用户!

简述Access数据库的打开方法


  1.在“文件”菜单上,单击“打开”。

  2.单击“打开”对话框左侧的快捷方式,或者在“查找范围”框中,单击包含要打开的 microsoft access 数据库的驱动器或文件夹。

  3.在文件夹列表中双击相应的文件夹,直到打开包含所需数据库的文件夹。

  如果找不到想要打开的数据库,请单击“打开”对话框中的“工具”,再单击“搜索”。在“搜索”对话框中,输入其他搜索条件。

  请执行下列操作之一:

  双击数据库

  若要在多用户环境下打开共享的数据库,使您和其他用户都能读写数据库,请单击“打开”。

  若要为只读打开数据库,使您能查看但不能编辑,请单击“打开”按钮旁边的箭头,再单击“以只读方式打开”。

  若要独占 打开数据库,请单击“打开”按钮旁边的箭头,再单击“以独占方式打开”。

  如果要以只读访问方式打开数据库,并且防止其他用户打开,可单击“打开”按钮旁的箭头,并单击“以独占只读方式打开”。

  注释 可直接打开外部文件格式(如 dbase,paradox,microsoft exchange 或 microsoft excel)的数据文件;也可直接打开任一 odbc 数据源,例如 microsoft sql server 或 microsoft foxpro。access 将在数据文件所在的文件夹中自动创建新的 access 数据库,并添加与外部数据库中每个表的链接。

  

  如果要打开一个最近打开过的数据库,可在“文件”菜单底部单击其文件名。 microsoft access 将使用与最后一次打开文件时相同的选项设置来打开该数据库文件。如果最近使用的文件列表未显示,单击“工具”菜单中的“选项”,单击“常规”选项卡,并选中“最近使用的文件列表”复选框。

  若要查看以前打开的数据库的快捷方式,请单击“打开”对话框左侧的“历史”。

  若要快速定位“收藏夹”中的文件或文件夹,请单击“打开”对话框左侧的“收藏夹”。若要打开个人文件或文件夹,单击快捷方式,然后单击“打开”

PHP中通过ADO调用Access数据库


我看了那篇《怎样在php中通过ado调用asscess数据库和com程序》文章后,马上作了测试,结果失败了。伤心是不是。

怎么办?我只好去php官方网站求助,皇天不负有心人,终于我找到了答案——

具体的解决方法如下:

(1)进入http://php.weblogs.com/adodb,下载相应的zip包;同microsoft公司的ado一样,该东东用php实现ado同各种各样数据库打交道(太好了,所有类型的数据库都能处理)。

(2)解包,里面文件很多,不过有用的只有ohtml.inc.php和adodb.inc.php,把它们复制到相应目录下(或是安装php4的缺省目录下c:\\php4\\peer\\,或是当前运行程序目录下,视include()函数而定);

(3)然后在本鸡(错误字一个,是机)的c:\\myphp目录下(iis下设置通过http://localhost/jhk来访问),造了一个名为test.mdb的access库,里头再造个experts的表……。为了通过dsn来访问,我把刚才的access库在dsn中取名test。

(4)运行。看着说明书我造了这么个程序:

dbtest.php,内容如下:

<?php

include(\\\’tohtml.inc.php\\\’); // load code common to adodb

include(\\\’adodb.inc.php\\\’); // load code common to adodb

&conn = &adonewconnection(\\\’access\\\’); // create a connection

&conn->pconnect(\\\’test\\\’);// connect to mysql, agora db

&sql = \\\’select name, group1 from experts\\\’;

&rs = &conn->execute(&sql);

rs2html(&rs,\\\’border=2 cellpadding=3\\\’,array(\\\’customer name\\\’,\\\’customer id\\\’));

&rs->close(); // optional

&conn->close(); // optional

?>

 

然后,ie中打入:http://localhost/jhk/dbtest.php

唉!结果出来了。 令人基本满意!!

(5) 接着,我又想:还要设置dsn,烦不烦!绕过dsn应如何解决?因为在asp中,我习惯用conn.open(\\\”provider=microsoft.jet.oledb.4.0;data source=\\\” & server.mappath(\\\”../nydatabase.mdb\\\”))来处理mdb库,那速度快呀!

?……想了又想,看了又看……。

找找找,……,嘿嘿,终于在testdatabases.inc.php 中找到了答案! 我再把刚才的程序改编:

<?php

include(\\\’tohtml.inc.php\\\’); // load code common to adodb

include(\\\’adodb.inc.php\\\’); // load code common to adodb

&db = &adonewconnection(\\\”ado_access\\\”);

rint \\\”<h1>connecting &db->databasetype…</h1>\\\”;

&access = \\\’test.mdb\\\’;

&mydsn = \\\’provider=microsoft.jet.oledb.4.0;\\\’.\\\’data source=\\\’. &access . \\\’;\\\’;.\\\’user id=;password=;\\\’;

if (@&db->pconnect(&mydsn, \\\”\\\”, \\\”\\\”, \\\”\\\”)) {

rint \\\”ado version=\\\”.&db->_connectionid->version.\\\”<br>\\\”;

&sql = \\\’select name, group1 from experts\\\’;

&rs = &db->execute(&sql);

rs2html(&rs,\\\’border=2 cellpadding=3\\\’,array(\\\’customer name\\\’,\\\’customer id\\\’));

} else print \\\”error: access test requires a access database &access\\\”.\\\’<br>\\\’.&db->errormsg();

?>

 

运行。

一切搞定!

如何在Access 2007数据库中添加附件


导读:access允许您在数据库表中包含附件。通过利用微软的对象链接和嵌入(ole)技术,您可以将照片、图表、文档及其他文件存储在您的access数据库中。在access 2007数据库中添加附件使数据库变的更丰富多彩。

数据库附件是access 2007版本的一个新特点,添加过程非常简单,费时较短,通过下面几个步骤就可以完成:

1. 首先使用access 2007打开access数据库。

2. 在“设计视图”中打开您想要添加附件的表。

3. 在“字段名称”列的空白行中为附件字段输入一个名称。

4. 在“数据类型”下拉框中选择“附件”

5. 点击屏幕左上角的保存按钮保存对表所做的更改。

6. 转到“数据表”视图查看表内容。

7. 双击出现在你想要添加附件的空白字段中的回形针图标。注意这个图标旁的括号内的数字代表了附加到此记录的文件数量。

8. 在出现的“附件”对话框中点击“添加”按钮,可添加新附件。

9. 在出现的“选择文件”对话框中,使用“搜索范围”列表导航到您要附加到该记录的文件,然后点击“打开”按钮。

10. 点击“确定”按钮,关闭“附件”对话框。

11. 你会注意到,该记录中回形针图标旁的数字也做出了相应的改变。

提示:

1. 本文所提到的向数据库对象添加附件功能只在access 2007中可用,之前的access版本并不支持此功能。

2. 所添加的文件必须小于250mb,而且您添加的附件总量最大只能达到2gb。

【编辑推荐】

详细讲解如何删除Access数据库中的空记录


access数据库操作过程中经常会出现很多的问题,针对那些问题故障,为了确保access数据库操作的正常进行,就得想出办法解决问题,access数据库中可能存在一些空记录,这些空记录对access数据库的根本没用,相反还占用access数据库的内存容量,那么这时我们就得将那些空记录删除掉。

假如你目前需要在microsoft access数据库中指示不存在数据,可以在“文本”或“备注”字段输入零长度字符串 (零长度字符串:不含字符的字符串。可以使用零长度字符串来表明您知道该字段没有值。输入零长度字符串的方法是键入两个彼此之间没有空格的双引号 (" ")。)。在连接到 microsoft sql server 数据库的 microsoft access 项目 (microsoft access 项目:与 microsoft sql server 数据库连接且用于创建客户/服务器应用程序的 access 文件。项目文件中不包含任何数据或基于数据定义的对象(如表或视图)。)中,可以在其数据类型 (数据类型:决定字段可拥有的数据类型的字段特征。数据类型包括 boolean、integer、long、currency、single、double、date、string 和 variant(默认)。)为 varchar 或 nvarchar 的字段中输入零长度字符串。

打开数据表 (“数据表”视图:以行列格式显示来自表、窗体、查询、视图或存储过程的窗口。在“数据表”视图中,可以编辑字段、添加和删除数据,以及搜索数据。),或在“窗体”视图 (“窗体”视图:一个显示窗体以便显示或接受数据的窗口。“窗体”视图是添加和修改表中数据的主要方式。在该视图中还可以更改窗体的设计。)中打开窗体。

若要在字段中输入零长度字符串,请键入中间不带空格的双引号 (" ")。

即使在移到其他字段或对象时双引号将消失,但该字段仍为零长度字符串。

null值与零长度字符串的区别 (mdb)。

/*注释 本主题中的信息仅适用于 microsoft access 数据库 (.mdb)。*/

在查看含有 null (null:可以在字段中输入或用于表达式和查询,以标明丢失或未知的数据。在 visual basic 中,null 关键字表示 null 值。有些字段(如主键字段)不可以包含 null 值。) 值和零长度字符串 (零长度字符串:不含字符的字符串。可以使用零长度字符串来表明您知道该字段没有值。输入零长度字符串的方法是键入两个彼此之间没有空格的双引号 (" ")。)的数据时,字段看起来是相同的,都没有任何值。但可以用表达式 (表达式:算术或逻辑运算符、常数、函数和字段名称、控件和属性的任意组合,计算结果为单个值。表达式可执行计算、操作字符或测试数据。)来区分 null 值和零长度字符串。

在“设计”视图 (“设计”视图:显示数据库对象(包括:表、查询、窗体、宏和数据访问页)的设计的窗口。在“设计”视图中,可以新建数据库对象和修改现有数据库对象的设计。)中打开窗体、报表或数据访问页。

在查询设计网格 (设计网格:在查询“设计”视图或“高级筛选/排序”窗口中设计查询或筛选时所用的网格。对于查询,该网格以前称为“qbe 网格”。)的字段中,或在未绑定控件 (未绑定控件:未与基础表、查询中的字段或 sql 语句连接的控件。未绑定控件通常用于显示信息性文本或装饰性图片。)的控件来源中,键入下列表达式。将 fieldname 替换为包含 null 值和零长度字符串的字段名称。

以下为引用的内容:
=iif(isnull([fieldname]),"unknown",format([fieldname],"@;\\zls"))

如果字段包含 null,则表达式返回 “unknown”,如果字段包含零长度字符串,则表达式返回“zls”。否则,表达式将值返回到该字段中。

事情出现在工作中一次抓取网上信息的时候,可能考虑不全,抓到库中的信息有部分是空的,这样,我的必需将空的记录删除,试了好多办法不行,最后才找到了上面的微软的access帮助文档才解决问题。

执行代码片断后,此问题解决。

以下为引用的内容:
sql="delete from news where iif(isnull([city]),
\’unknown\’,format([city],\’@;\\zls\’))=\’unknown\’"
conn.execute(sql)

通过上文中的方法,就能够很轻松的将没用的空记录删除掉,从而可以腾出更多的空间储存跟过有用的数据,希望上文涉及到的内容对大家能够有所帮助。

解析Access数据库安全的几个问题


  问:什么是microsoft access 工作组,怎样创建工作组信息文件?

  答:microsoft access 工作组是在多用户环境下共享数据的一组用户。如果定义了用户级安全,工作组的成员将记录在用户帐号和组帐号中,这些帐号则保具有 microsoft access 工作组信息文件中。用户的密码也保具有工作组信息文件中。可以为这些安全帐号指定对数据库及其对象的权限。权限本身将存储在安全数据库中。

  在 microsoft access 97 中,用户的设置存储在 windows 注册表的 hkey_current_usersoftwaremicrosoftoffice8.0accesssettings 关键字中。在 microsoft access 的旧版本中,“选项”对话框中定义的用户选项设置记录在工作组信息文件中。

  默认的工作组是由安装程序自动在安装 microsoft access 的文件夹中创建的工作组信息文件定义的。 可以使用“工作组管理器”重新创建工作组。

  问:怎样打开“工作组管理器“?

  答:如果使用的是 windows 95 或 windows nt workstation 4.0,可使用“我的电脑”或 windows“资源管理器”打开安装 microsoft access 的文件夹(默认文件夹是 program filesmicrosoft officeoffice),然后双击 wrkgadm.exe。

  问:怎样允许他人查看或执行查询,但不能更改数据或查询设计?

如何创建一个Access查询电邮


第1步

打开access数据库。查询从选择您要创建的电子邮件。转到“工具”菜单在access 2003中,指向“办公室链接”,然后选择“合并使用microsoft word中。”到“外部数据”选项卡在access 2007。点击“更多”中的“导出”组,然后选择“合并与微软office word中。”到“外部数据”选项卡在access 2010。点击“word合并”中的“导出”组。

第2步

选择“连接您的数据到现有的文档中的合并向导”如果你已经准备的文件要发送。查找并选择该文件。选择“创建一个新文档”如果你不已经有一个准备。点击“确定”。一个新的microsoft word文档将打开邮件合并任务窗格沿。

第3步

选择“电子邮件信息”下的“选择文档类型”,然后点击“下一步。”选择在“正在启动文档”部分并点击选择“下一步”。确保访问查询被列为您的收件人源,并点击“下一步”了。

第4步

点击“问候语”在任务窗格中添加个人问候每封电子邮件收件人。写身体的电子邮件的邮件,除非您使用的是模板的或现有的文档。点击“下一步”,预览电子邮件消息。

第5步

点击“下一步”完成合并。点击“电子邮件”在邮件合并任务窗格中打开其发送至“合并”对话框。输入一个电子邮件的主题行,选择一个电子邮件格式,然后点击“确定”发送电子邮件。

Access具有哪些特点


导读:access 是微软公司推出的基于windows的桌面关系数据库管理系统(rdbms,即relational database management system),是office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。
它具有很多特色,具体来说其特点如下:
(1)存储方式单一
access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件种,便于用户的操作和管理。
(2)面向对象
access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外国,用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。

(3)界面友好、易操作
access是一个可视化工具,是风格与windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。
(4)集成环境、处理多种数据信息
access基于windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。
(5)access支持odbc(开发数据库互连,open data base connectivity),利用access强大的dde(动态数据交换)和ole(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、excel表格、word文档,还可以建立动态的数据库报表和窗体等。access还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问页对象生成html文件,轻松构建internet/intranet的应用。
(6)数据库过大,一般百m以上(纯数据,不包括窗体、报表等客户端对象)性能会变差。
(7)虽然理论上支持255个并发用户,但实际上根本支持不了那么多,如果以只读方式访问大概在100个用户左右,而如果是并发编辑,则大概在10-20个用户。
(8)记录数过多,单表记录数过百万性能就会变得较差,如果加上设计不良,这个限度还要降低。
(9)不能编译成可执行文件(.exe),必须要安装access运行环境才能使用。
access的特点就为大家介绍这些,这只是access特点的一部分,更多的特点还需要大家在以后的工作中细心总结,到时候,总结出更多的知识点的时候,不要只顾自己一个人享受,要拿出来与大家一起分享哦。

access基础教程之如何在表向导中修改字段名


  用同样的方法把“记帐地址”改成“开户行”,把“客户id”改成“序号”,这下该改的都改完了。现在这个表需要的字段已经有了,单击“下一步”按钮。

  这一步要给表指定名字,把名字改成“客户资料表”,选择“是,设置一个主键”,关于主键的问题课后的补充有完整的介绍,单击“下一步”按钮。表向导又给我们提了一个问题“请选择表创建完之后的动作”。表建好之后,如果想马上把数据输入到表中,就选择第二项“直接向表中输入数据”,之后单击“完成”按钮,结束用向导创建表的过程。这样,一个表就建好了。

将数据字段隐藏起来 access


  “撤消隐藏列”对话框的列表框中列有表的所有字段,而且每个字段前面都有一个方框,没有隐藏的列前面的方框中有“√”号,而隐藏了的列前面的方框中是空的。要取消对一个列的隐藏,只要单击这个列前面的方框,使它里面出现一个“√”符号,就可以取消隐藏。完成以后单击对话框上的“关闭”按钮。



Powered By wordpress Copyright access数据库教程 © 2009-2012 版权所有