2024年6月21日发(作者:)
第12卷第2期
2013年4月
常州信息职业技术学院学报
Vok12 N0.2
Apt.2013
JournalofChanszhouVocationalCollege ofInformatbnTechnology
ASP.NET+Access技术建站安全性初探
马晓荣 孙悦 肖宁
710100; (1.陕西职业技术学院计算机科学系
2.陕西交通职业技术学院信息工程系
陕西西安
陕西西安71oo18)
摘要:针对Access数据库本身的安全性及ASP.NET网站设计过程中存在的常见安全问题,提出了增强ASP.NET+Access
网站安全性的具体对策,在实际开发网站的过程中具有较强的指导作用,同时对于加强网络的安全性也具有重要的
意义。
关键词:AsP.NET;网站设计;安全性
中图分类号:TP 393.08 文献标志码:A 文章编号:1672-2434(2Ol3)02删l26 D3
Exploralion of Web Designing Security
Based on ASP.NErI1+Access
MA Xiao-rong SUN Yue XIAO Ning
(1.Department of Computer Sconce,Shaanxi Vocational&Technical College,Xi’an 710100,Chin;
2.Department of Information Engineering,Shaanxi College of Communication Technology,Xi’an 710018,China)
Al ̄atet:According c0the security ofAccess database andthe problems inthe websRe design process ofASP.NET.this paper intro-
daces the detailed countermeasures of s仃en星 e她
y神:ASP.NET;website design;securh'y
hte security of ASP.NET十Access webs ̄e.It ropvides a strong guide for
developing websites and has ̄ortant signif ̄ance for strengthening websRe security.
在B/S模式下使用ASP.NET+Access的模式
来开发Interact网站的思路已备受广大程序员的欢
迎。ASP.NET作为一种典型的创建动态web内容
的强大的服务器端技术,被广泛应用在网站建设中。
Access数据库作为Microsoft公司推出的以标准
安全漏洞和Access数据库本身存在的安全性问题。
本文在对网站常见安全问题进行分析的基础上给出
了相应的解决方案。
1关键技术分析
ASP.NET是一种全新的创建动态网页的技术,
它是建立在微软新一代.NET平台架构上,在服务器
端为用户提供建立强大企业级web应用服务的编
译型编程框架,可用任何与.net兼容的语言开发应
用程序,支持组件化、代码复用和快速开发等技术。
Accesss数据库管理系统是Wh3dows平台上最
JET为引擎的桌面型数据库系统,因其界面友好、操
作简单而赢得广大用户的青睐。因此,将ASP.NET
与Access结合使用已成为目前建设中小型网站的
首选方案。但该方案在建设网站提供方便快捷的同
时,日益突出的安全问题如数据库信息泄露、非法登
陆等越来越受到用户的关注。该方案存在的安全隐
患主要有两种,分别是使用ASP.NET设计网页时的
收稿日期:2013-03-05
适用、最受欢迎的数据库管理系统之一。它拥有大
作者简介:马晓荣(1977一),女,讲师,硕士,主要研究方向:计算机软件、数据库系统
第12卷第2期 马晓荣等:ASP.NET+Access技术建站安全性初探 27
量工具和特性,界面简单友好,开发、操作容易;拥有
在一个工作组级别的网络环境中,开发多用户数据
库管理系统,能够实现C/S结构和相应的数据库安
全机制,具备了许多先进的大型数据库管理系统所
具备的特征。
2网站安全分析
2.1 Access数据库安全分析
2.1.1 Access数据库存储隐患
网站的重要信息都需要存储在数据库中,所以
数据库是网站运营的基础,如果数据库( .m曲)的
存储路径和文件名被非法用户通过各种方法猜到或
者得到,那么这个数据库很有可能通过“URL/数据
库所在路径名/数据库名.mdb”地址被非法用户下载
到需要的位置。这样,安全性比较差,网站中的重要
信息会被非法用户完全了解。
解决上述问题常用的方法是将Access数据库
文件的扩展名由“.mdb”改成“.aspx”,然后再修改数
据库连接文件(如corm.aspx)中的数据库地址的内
容,这样即使数据库文件的文件名和存储位置被得
知,也会错误地认为无法进行下载。原因是IIS服
务器不去处理“.mdb”文件,而是直接将内容输出到
Web浏览器,而“.aspx”文件则要经过IIS服务器处
理,Web浏览器显示的是处理结果,并不是ASPX
文件的内容。
这种解决方法却可通过FlashGet被完整下载,
具体的方法是在其存储路径的“重命名”框中输入
扩展名为.mdb名称,即可顺利将数据库下载下来。
这表明仅仅依靠将数据库的扩展名由“.mdb”改成“.
aspx”,还是存在一定的安全隐患。
2・1.2 Access数据库解密隐患
因为Access数据库的加密机制比较简单。所
以即使为数据库设置了密码,破解密码也很容易。
该数据库系统通过将用户输入的密码与某一固定密
钥进行异或来形成一个加密串,并将其存储在 .
mdb文件中从地址“&H42”开始的区域内。因为异
或操作有着“经过两次异或就恢复原值”的特点,故
可用这一密钥与 .mdb文件中的加密串进行第二
次异或操作,Access数据库的密码便可轻松得出。
基于此,解密程序便可容易地设计出。由此可知,只
要数据库被下载了,无论数据库是否设置了密码,数
据库中信息的安全性将没有任何保障。
2.2 ASP.NET技术安全分析
2.2.1 ASP.NET程序设计中的安全隐患
ASP.NET代码使用表单实现交互,相应的内容
将体现在浏览器的地址栏中,若没有适当的安全措
施,只要非法用户记下地址栏中的内容,便可绕过验
证直接进入核心页面。如在浏览器地址栏中输人
“
…
bookview.aspx?X=aaa”,便可不经过表单页面而
直接进入满足“X=aaa”条件的页面。
2.2.2 SQL注入漏洞
SQL注入就是攻击者通过web应用程序利用
SQL语句或字符串将非法的数据插入到服务器端
实际的数据库中,从而获得未经授权的访问和直接
检索,最终控制网站获取重要的信息或破坏等。以
网站登录页面中用户名和密码的验证为例,通常采
用如下的代码:OleDbConnection MyConnection=new
OleDbConnection(CcnnectionStrmg);
Strsql=”Select from user where name=”’
UserName+”’and password=’”+password+”…:
OleDbCommand MyCommand=new OleDbCom-
mand(strsql,Myconnection);
MyConnection.Open();
OleDbDataReader MyReader=MyCommand.Ex-
ecuteReader0;
If(MyReader.Read())
{
∥登录成功时要执行的代码
}
正常输人不会产生问题,但假如用户在用户名
和文本框中输入:“a’or’a’=’a”也可以通过验证。
2.2
.
3输入框中输入恶意脚本
恶意脚本指用户将恶意的脚本代码输人网页文
本框控件中,如“<scr ̄t>while(1)own(’http'g/www.
baidu.corn/’)</script>”。单击网页的提交按钮,则
会弹出无数个百度新窗口,直至CPU超负荷,系统
资源消耗至死机为止。即攻击者可通过向输入框输
入script代码达到攻击目的。
3 ASP.NET+Access安全问题解决
方案
3.1 Access数据库存储安全对策
常州信息职业技术学院学报 2013年4月
因为Access数据库的加密机制比较简单,所以
如何有效地防止Access数据库被非法用户下载,就
成为提高ASP.NET+Access解决方案安全性中一
个亟待解决的问题。
1)修改数据库的名称。为Access数据库文件
取一个复杂的非见名知意的名字,并将其存放在多
层目录下是防止数据库被找到的简便方法。比如网
上书店的数据库,不能简单地给其取名为“book.
mdb”或者“bookstore.mdb”,而是取一个复杂的非见
名知意的名字,如wdasdfsd.mdb,再将其放在如
yykkddee/ghjkluoip/ghtqwer/之类的深层目录下。这样
可以有效阻止那些通过猜测的方式得到Access数
据库文件名的非法访问。
2)数据库放在WEB根目录外或将数据库连接
文件放到其它虚拟目录下,如WEB目录是e:\
webroot,可把数据库放到e:\data这个文件夹里,在
e:\webroot里的数据库连接页中修改数据库连接地
址为:”../data傲据库名”的形式,这样数据库可正常
调用,但是无法下载,因为它不在WEB目录里。
3)防止暴露数据库。为防止数据库被下载,还
可在数据库内新建一个表,表内输入一个文本内容
为<%abedefgasdPA>,可以任意输入内容,只要不
能被执行即可。再将数据库扩展名改为.aspx,这样
非法用户试图下载数据库时便会提示“aspx解析出
错,第AAA行”。通过这样的操作,数据库将不会
被暴露。此外配置.mdb文件解析对应,配置数据池
等方法也可比较有效地防止数据库被暴露。
3.2 ASP.NET程序设计中安全对策
为防止未注册的用户绕过注册界面直接进入应
用系统,可用Session对象进行注册验证。Session对
象最大的优点是可以把某用户的信息保留下来,让
后续的网页读取。如:设计要求用户注册成功后系
统启动“bookview.aspx?page=aaa”页面。如果未
使用Session对象进行注册验证,那么用户在浏览器
中输入“URL/bookview.aspx?page=aaa”,就可以
绕过注册界面,直接进入应用系统。可在用户登录
时提交一个Session对象,如session[‘‘username”]将
登录用户的name进行提交,在进入其它页面时先
验证session[‘‘llserilame”]是否为空值,是否存在于
数据库中以此来判断用户是否登录。可以有效阻止
这一情况的发生。相关的程序代码如下:protected
void Page Load(object sender,EventArgs e)
{if(session[‘‘username”]==nul1)Response.Re.
direct(“1og.m.aspx”);}
这样用户必须输入正确的用户名及密码,否则
即使输人“URL/viewifo.asp?page=1”也会自动跳
转到Login.aspx页面,要求用户输入用户名和密码。
3.3防止SQL注入漏洞安全对策
对于SQL注入漏洞,可通过以下方法加以预
防:①在生成SQL查询前通过验证控件对用户的输
入进行验证,过滤掉单引号等的危险字符的输入,确
保输入的内容只包含合法的数据;②在SQL语句中
使用参数,由于OleDbCommand对象的parameters
集合提供了类型检查和长度验证,使用它,则输入将
被视为文本值而不是可执行代码,以下代码实现在
调用SQL语句时使用Parameters集合:
strsql=”select from user where name=@tl
and password=@t2”;
Mycommand.Parameters.Add(”@tl”,OleDbType.
Char).Value=TextBox1.Text;
Mycommand.Parameters.Add(”@t2”,OleDbTypc.
Char).Value=TextBox2.Text;
3.4 ASP.NET中恶意脚本的消除
为有效地防止用户恶意脚本的输入,一是严格
地对用户的输入进行验证屏蔽掉“<”或“>”等危
险字符;二是将用户输人的“<”或“>”等恶意字符
进行删除;三是通过Server.HtmlEncode()方法对用
户输入的内容进行编码转换,从而使浏览器不会执
行含有“<SCRIPT>”标记的脚本代码。
针对ASP.NET+Access技术建站方案中容易
出现的安全性问题进行了剖析,并提出了相应的解
决对策,在实际开发网站的过程中具有较强指导作
用,同时对于加强网络安全性也具有重要的意义。
参考文献:
[1]崔永红.ASP.NET程序设计[M].北京:中国铁道出版
社,2007:18—27.
[2]翁健红.ASP.NET程序设计案例教程[M].北京:清华
大学出版社,2001:9—11.
[3] 戴明星,陈正奎.web网站的安全代码设计[J].学术研
究,2010(10):92・94.
[4]李杨.网站安全漏洞解析[J].四川兵工学报2012,33
(1)97-99.
发布者:admin,转转请注明出处:http://www.yc00.com/web/1718924472a2753590.html
评论列表(0条)