×

深圳网站建设—APP开发—网站制作—小程序开发_博纳网络公司

0755 -
82538016
82560826
网站制作资讯

asp网站建设怎样解决网站数据库的安全?

文章编辑:网站建设 文章来源:网站建设方案 浏览量:

     asp网站建设怎样解决网站数据库的安全?网站建设公司提醒对于采用“虚拟主机”的方式建立的中小型网站,其后台数据库绝大多数采用Access数据库。如果有人通过各种方法获得或者猜到数据库的存储路径和文件名,则该数据库可以被下载到本地。为了防止被非法下载和访问,深圳网站建设公司安全工程师认为可采取以下措施。
(1)改变数据库名称。为数据库文件起一个复杂的非常规的名字,并放在几层目录下。所谓“非常规”,就是说如果有一个数据库要保存的是有关电子商店的信息,不把它命名为“eshop.mdb”,而是起一个比较怪的名称,如d34ksfslf.mdb,再放在如/kdslf/i44/studi/的几层目录下,这样黑客要想通过猜的方式得到Access数据库文件就比较困难了。
(2)不把数据库名写在程序中。许多人都把 DSN 写在程序中,如 DBPath=Server.MapPath("cmddb.mdb")conn.Open"driver={Microsoft Access Driver(*.mdb)};dbq="&DBPath,假如被人拿到了源程序,Access 数据库的名字就一览无余。因此建议在 ODBC里设置数据源,再在程序中这样写:conn.open"shujuyuan"。
(3)改变数据库文件的扩展名。如把abc134.mdb改为abc134.asp,这样在ASP文件及数据库操作中仍然可以正常使用,但在非法访问者看来,该文件已不是数据库文件了。
(4)加密Access数据库文件。选择“工具”|“安全”|“加密”|“解密数据库”,选取数据库
(如employer.mdb),然后按“确定”按钮,会出现“数据库加密后另存为”窗口,将数据库存为employer1.mdb。接着,employer.mdb会被编码,然后存为employer1.mdb。要注意的是,以上的方法并不是对数据库设置密码,而只是对数据库文件内容加密,目的是为了防止他人使用别的工具来查看数据库文件的内容。接下来为数据库设置密码,首先打开经过编码的employer1.mdb,在打开时,选择“独占”方式。然后选取功能表的“工具”|“安全”|“设置数据库密码”,输入密码即可。为employer1.mdb设置密码之后,如果再使用Access数据库文件,则Access会先要求输入密码,验证正确后才能启动数据库。可以在ASP程序中的connection对象的open方法中增加PWD参数来访问有密码保护的数据库文件,例如:
    
这样,即使别人得到了employer1.mdb文件,没有密码也无法看到employer1.mdb的内容。
综合使用上述方法,数据库被非法下载的可能性就会降低。
asp网站建设如何防范SQL注入攻击1.SQL注入攻击的原理
    许多动态网站在编写程序时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户通过向数据库提交一段精心构造的SQL查询代码(一般是在浏览器地址栏进行,通过正常的WWW端口访问),根据程序返回的结果,收集网站与数据库的信息,进而非法获得网站数据库中的敏感信息或向其中添加自定义数据,这就是SQL Injection,即SQL注入攻击。SQL注入攻击使用简单,危害大。被攻击成功的网站往往被攻击者掌握最高权限,可任意增删数据。
为了说明SQL注入攻击的原理,可在本地网站http://localhost/进行测试。
http://localhost/show.asp?ID=123 是一个正常的网页地址,将这个网址提交到服务器后,服务器将进行类似Select*from 表名 where 字段="&ID的查询(ID即客户端提交的参数,本例是 123),然后将查询结果返回给客户端,如果在这个地址后面加上单引号“ˈ”,服务器会返回下面的错误提示:
    
字符串的语法错误在查询表达式ˈID=123ˈˈ 中。
    
从这个错误提示能看出下面几点:
(1)网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。
(2)程序没有判断客户端提交的数据是否符合程序要求。
(3)该SQL语句所查询的表中有一个名为ID的字段。
除了上述介绍的在页面地址栏中加单引号“ˈ”的方法判断可否注入外,还可以在页面地址后面分别加入“and 1=1”和“and 1=2”来测试网站能否注入,这就是经典的 1=1、1=2测试法,通过其返回结果可以判断能否注入。如下所示:
①http://localhost/show.asp?id=123
②http://localhost/show.asp?id=123 and 1=1
③http://localhost/show.asp?id=123 and 1=2
可以注入的表现:
① 正常显示(这是必然的,不然就是程序有错误了)。
② 正常显示,内容基本与
①相同。
③ 提示BOF或EOF(程序未做任何判断时),或提示找不到记录(判断了rs.eof时),或显示内容为空(程序加了on error resume next)。
不可以注入就比较容易判断了,
①同样正常显示,②和③一般都会有程序定义的错误提示,或提示类型转换时出错。
不同的数据库的函数、注入方法是有差异的,通常在注入之前,攻击者还要判断一下数据库的类型。一般ASP最常搭配的数据库是Access和SQLServer。
SQLServer有一些系统变量,如果服务器IIS提示没有关闭,并且SQLServer返回错误提示,则可以直接从出错信息中获取,方法如下:
    
该语句前面的部分是正常的,重点在and user>0,我们知道,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。用一个nvarchar的值与int的数0比较,系统会先试图将nvarchar的值转换成int型,当然,转换的过程中肯定会出错,SQLServer的出错提示类似于“将nvarchar的值‘abc’转换成数据类型为 int 的列时发生语法错误”,其中,abc正是变量user的值,这样,很容易就得到了数据库的用户名。
如果服务器IIS不允许返回错误提示,那么如何判断数据库类型呢?攻击者可以从Access和SQLServer的区别入手。Access和SQLServer都有自己的系统表,如存放数据库中所有对象的表,Access是在系统表“msysobjects”中,但在Web环境下读该表会提示“没有权限”,而SQLServer是在表“sysobjects”中,在Web环境下可正常读取。
在确认可以注入的情况下,使用下面的语句:
    
如果数据库是SQLServer,那么第一个网址的页面与原页面http://localhost/show.asp?id=123是大致相同的;而第二个网址,由于找不到表msysobjects,会提示出错,就算程序有容错处理,页面也与原页面完全不同。
    如果数据库用的是Access,那么情况就有所不同。第一个网址的页面与原页面完全不同;第二个网址则视数据库设置是否允许读该系统表而定,一般来说是不允许的,所以与原网址也是完全不同。大多数情况下,用第一个网址就可以得知系统所用的数据库类型,第二个网址只作为开启IIS错误提示时的验证。
    好了,深圳网站建设公司本文关于“asp网站建设怎样解决网站数据库的安全?”就分享到这里。如果您需要深圳网站建设公司为您定制开发高端企业门户网站,请咨询我们网站在线客服或者拨打我们建站技术客服联系电话,为您提供详细的高端网站建设与网站安全解决方案。谢谢关注,博纳网络编辑整理。

当前文章链接:/construction/fach/15032.html
如果您觉得案例还不错请帮忙分享:

[声明]本网转载网络媒体稿件是为了传播更多的信息,此类稿件不代表本网观点,本网不承担此类稿件侵权行为的连带责任。故此,如果您发现本网站的内容侵犯了您的版权,请您的相关内容发至此邮箱【qin@198bona.com 】,我们在确认后,会立即删除,保证您的版权。

相关案例推荐