IIs下的ASP.NET+Access技术建站安全性
针对ASP.NET网站开发中的常见问题,以及ACCESS数据库自身的安全性问题,提出了具体的解决方案。能很好的指导如何在网站实际开发中避免这类问题的出现。
【关键词】ASP.NET 数据库 安全技术
由于在服务器市场上Windows系列操作体统应用更为广泛,使得管理员们更多的是使用微软的Internet服务器软件iis来构架服务。同时微软的另一个产品Access因它的高效、经济和实用性受到广大中小型企业以及个人用户的青睐。而ASP.NET作为一种典型的创建动态web内容的强大的服务器端技术而被广泛用用在网站建设中。因此基于IIS的ASP.NET+Access来构建网络应用系统已成为中小型网站的首选方案。但是该方案在提供方便快捷的同时,日益突出的安全问题也受到用户的关注。
该方案的问题主要是Access数据库本身存在的安全性问题和用ASP.NET所编写的源代码的安全漏洞。
1 网站安全分析
1.1 Access数据库安全分析
Access数据库系统通过将用户输入的密码与某一固定密钥进行异或操作来形成一个加密串,并将其存储在MDB文件中一段特定的地址区域内。由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.mdb文件中的加密串进行第二次异或操作,就可以得到数据库的密码。而这脆弱的加密机制使得数据库没有任何安全可言。
网站的重要信息都存储在数据库中,如果数据库(*.Mdb)的存储路径和文件名被非法用户通过各种方法猜到或得到,那么这个数据库就可能被非法用户下载。
所以access数据库的安全问题主要在其解密隐患和存储隐患上。
1.2 ASP.NET技术安全分析
大多数Web应用程序攻击都要在 HTTP 请求中传递恶意输入项。一般这种攻击并非强迫应用程序执行未经授权的操作,而是要中断应用程序的正常操作。Asp.Net网站系统常见的威胁为代码注入。
所谓的代码注入是最常见的一种安全漏洞,也是最容易受到攻击的,因为攻击者不需要掌握太多的专业知识就可以对这些漏洞进行攻击。对系统的威胁也非常大。代码注入攻击主要包括SQL 注入、跨站点脚本机恶意脚本输入。SQL注入是指根据用户的输入值来动态构造SQL语句,该构造语句很可能就是攻击性的有害SQL语句。即攻击者可发送SQL输入来更改数据库中的预期查询或执行全新的查询。表单身份验证登录页是常见的攻击对象,因为查询用户存储所使用的是用户名和密码。跨站点脚本是指将恶意脚本作为输入项发送到 Web 应用程序。一旦执行,结果将回应至用户浏览器。
除了代码注入以外,网站的威胁还有信息泄漏和身份盗用。信息泄漏主要涉及把一些服务器出错信息以 HTML 的形式返回并显示在浏览器中,这可能会泄漏很有用的信息。攻击者利用这些信息很容易找到攻击的方法。恶意用户盗用合法用户的身份访问网站系统,主要包括身份验证Cookie未加密的保存在客户端,系统中用户使用了弱密码等。攻击者采用这些信息以合法的用户身份登录系统。
2 网站安全问题解决方案
2.1 改进Access数据库安全机制的对策
因为Access简单的数据库加密机制,使得如何防止非法用户下载数据库成为提高数据库安全性的重要方法。
由于用户是通过IIS服务来下载Access数据库的,所以只要屏蔽它的下载服务就可以保护数据库文件。首先管理员可以将数据库的扩展名改为asp文件,同时为了防止用下载工具下载更名后的asp文件需要在IIS脚本配置中对扩展名为asp的文件去掉get权限。其次在数据库的文件名中使用特殊字符,比如“#”等,用于IIS服务对这些特殊字符有特定的解释,使得无法正确的定位文件,从而起到了保护的作用。最后是由于IIS所能访问的文件都是基于IIS根目录的,所以将数据库放在根目录外或放在其他的虚拟目录下就使得用户无法访问到数据库文件。但是使用这个方法要注意到来宾访问账号的读写权限!
2.2 ASP.NET程序设计的安全措施
知道了攻击者怎么攻击Asp.Net网站系统,系统在编写第一句代码的时候就需要考虑安全性问题,防止系统漏洞的出现,不给攻击者攻击的机会。首先要加强用户注册登录的安全。一般的程序设计会要求用户在注册成功后系统启动hrmis.asp?page=1页面。但如果不采用Session对象进行注册验证,那么用户在浏览器中敲入“URL/hrmis.asp?page=1”就可以绕过注册界面而进入系统。因此必须利用Session对象进行注册验证。
对于SQL注入的预防,可以通过很多种技术来解决。第一:在生成查询前验证用户的查询语句,过滤掉危险字符,如把所有单独出现的单引号改成两个单引号。从而防止攻击者修改SQL命令的含义;第二:为防止用户恶意脚本的输入,需要通过验证屏蔽或删除“<”或“>”等恶意字符。同时通过对用户输入内容进行编码转换使得浏览器不执行带有“