下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

10分钟了解ASP+Access的安全隐患和对策

作者:课课家     来源: http://www.kokojia.com点击数:688发布时间: 2017-02-05 16:36:32

标签: 考试认证等级考试Access

软考,您想通过吗?一次通过才是硬道理

  很多人以为ASP+Access的解决方案很安全,然而事实上还是存在着各种不确定的不安全因素。那么到底这些不安全因素是什么呢?为此在本文中课课家笔者就此向大家作出详细的介绍,希望大家在阅读完本篇文章后对此有一个比较全面的了解。

10分钟了解ASP+Access的安全隐患和对策_考试认证_等级考试_Access_课课家

 


 

  通常ASP+Access解决方案的主要安全隐患来自Access数据库的安全性,其次在于ASP网页设计过程中的安全漏洞。

  


 

  Access数据库安全隐患

  Access数据库的存储隐患

  在ASP+Access应用系统中,通常如果获得或者猜到Access数据库的存储路径和数据库名则该数据库就可以被下载到本地。举个例子,对于网上书店的Access数据库,大家都会把它命名为book.mdb、store.mdb等,而存储的路径一般为“URL/database”或者放在根目录(“URL/”)下。弊端在于别人只要在浏览器地址栏中敲入址:“URL/database/store.mdb”就可以轻易地把store.mdb下载到本地的机器中了。

  Access数据库的解密隐患

  由于Access数据库的加密机制非常简单,所以即使我们对数据库设置了密码,别人要想解密其实也是非常简单的。该数据库系统通过将用户输入的密码与某一固定密钥进行异或来形成一个加密串,并将其存储在*.mdb文件中从地址“&H42”开始的区域内。由于异或操作的特点是“经过两次异或就恢复原值”,所以用这一密钥与*.mdb文件中的加密串进行第二次异或操作就可以轻松地得到Access数据库的密码。正是基于这种原理别人就可以很容易地编制出解密程序。由此可见,无论我们是否设置了数据库密码,只要数据库被下载,其信息的安全性就没有了。

  源代码的安全隐患

  我们知道ASP程序采用的是非编译性语言,而这就大大降低了程序源代码的安全性。任何人只要进入站点就可以获得源代码,从而造成ASP应用程序源代码的泄露。

  程序设计中的安全隐患

  ASP代码利用表单(form)实现与用户交互的功能,而相应的内容会反映在浏览器的地址栏中。如果我们不采用适当的安全措施,别人只要记下这些内容就可以绕过验证直接进入某一页面。比如在浏览器中敲入“……page.ASP?x=1”,就可以不经过表单页面直接进入满足“x=1”条件的页面。因此我们在设计验证或注册页面时必须采取特殊措施来避免此类问题的发生。

  提高数据库的安全性

  由于Access数据库加密机制过于简单,因此如何有效地防止Access数据库被下载就成了提高ASP+Access解决方案安全性的重中之重。

  非常规命名法

  要想防止数据库被找到的简便方法就是为Access数据库文件起一个比较复杂的且非常规名字,然后把它存放在多层目录下,这样就能够有效提高数据库的安全性了。比如对于网上书店的数据库文件,不要简单地命名为“book.mdb”或“store.mdb”,而是要起个非常规的名字,比如:faq19jhsvzbal.mdb,再把它放在如./akkjj16t/kjhgb661/acd/avccx55之类的深层目录下。如此对于一些通过猜测的方式而得到Access数据库文件名的非法访问方法就能够起到了有效的阻止作用。

  使用ODBC数据源

  在ASP程序设计中我们应尽量使用ODBC数据源而不要把数据库名直接写在程序中,不然数据库名将随ASP源代码的失密而一同失密。具体比如:

  DBPath = Server.Mappath(“./akkjj16t/kjhgb661/acd/avccx55/faq19jhsvzbal.mdb”)

  conn.Open“driver={MicrosoftAccessDriver(*.mdb)};dbq=” &DBPath

  从上式中我们可以发现即便数据库名字起得再奇怪且隐藏的目录再深,当ASP源代码失密后其数据库也很容易被下载下来。如果我们使用ODBC数据源则不会存在这样的问题了:

  conn.open“ODBC-DSN名”

  


 

  对ASP页面进行加密

  为了有效地防止ASP源代码泄露,我们可以对ASP页面进行加密的操作。通常对ASP页面进行加密有两种方法:

  通过使用组件技术将编程逻辑封装入DLL之中。

  通过使用微软的Script Encoder对ASP页面进行加密。

  通常使用组件技术存在的主要问题是每段代码均需组件化且操作比较烦琐,工作量较大。相反使用Script Encoder对ASP页面进行加密操作简单且收效良好,Script Encoder方法具有许多优点:

  ● HTML仍具有很好的可编辑性

  ScriptEncoder只加密在HTML页面中嵌入的ASP代码而其他部分仍保持不变,这就使得我们仍然可以使用FrontPage或Dreamweaver等常用网页编辑工具对HTML部分进行修改、完善。不过我们不能对ASP加密部分进行修改,否则将导致文件失效。

  ● 操作简单

  在我们使用Script Encoder时只要掌握几个命令行参数就可以了。

  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 *.ASPc: emp

  


 

  利用Session对象进行注册验证

  为了防止未经注册的用户绕过注册界面直接进入应用系统,我们可以采用Session对象进行注册验证。Session对象最大的优点是可以把某用户的信息保留下来从而让后续的网页读取。设计要求用户注册成功后系统启动hrmis.ASP?page=1页面。如果不采用Session对象进行注册验证则用户在浏览器中敲入“URL/hrmis.ASP?page=1”就可以绕过注册界面直接进入系统。利用Session对象可以有效阻止这一情况的发生。下面是相关的程序代码:

  

  


 

  以上就是ASP+Access的安全隐患和对策的方法介绍,笔者相信大家对此都有一个基本的了解了吧。那么本次的10分钟了解ASP+Access的安全隐患和对策的讲解到此就暂告一段落,如果以后有什么相关的内容继续进行补充或者修改的话,笔者会在此继续进行相关的内容的补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充。最后笔者希望本次的讲解对大家学习Access能够起到一定的帮助作用!

赞(0)
踩(0)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程