您当前的位置:首页 > 计算机论文>计算机应用论文

ASP环境下的安全技术分析与探讨

2015-05-16 11:38 来源:学术参考网 作者:未知

  从asp系统的全局出发,从web服务器端、数据库端、asp程序设计三个方面对asp的安全技术进行分析和总结,并指出asp的安全应以预防为主。

       asp是微软推出的服务器端脚本环境,它把脚本、html、activex组件有机地结合在一起,形成动态、交互、高效的web服务器应用程序。目前,iis+asp+sql(或access)方案已成为中小型企业构建自己网上信息系统的首选方案。虽然asp具有快速开发能力,但asp也存在不容忽视的安全漏洞,这些安全问题是asp程序开发者和管理者一直努力解决的问题。本文试图从服务器端、数据库端、asp程序设计三个方面对asp的安全技术进行分析。

  一、2 asp的安全技术分析

  (一) web服务器端的安全技术

  1.目录文件的保护

  (1) ntfs权限。ntfs文件系统提供了比fat32更为安全的文件管理方式,它通过文件访问控制表(acl)定义了用户访问文件和目录的权限级别,如果用户具有打开文件的权限,计算机则允许该用户访问文件。通过设定目录和文件的访问权限,禁止无关用户对目录文件进行复制、修改、删除等操作,限制对系统的入侵。

  (2) 虚拟目录及其属性设置。虚拟目录隐藏了有关站点目录结构的重要信息,在asp环境下,较安全的做法是将asp脚本和html文件分开存放在不同的目录下,将存放html文件的目录设为只读属性,将存放asp脚本的目录设为执行属性。

  (3)防止查看asp文件。iis自带的code.asp或showcode.asp文件,可以查看asp程序的源代码,从而窃取相关的信息。可以在web服务器端删除该文件或者禁止访问存放该文件的目录。

  2.限制访问技术

  (1)ip地址限制。iis能够授权或拒绝特定ip地址对其访问,通过拒绝某特定ip地址的访问,以排除入侵干扰。具体设置:a启动ism(internet服务管理器);b启动web属性页中“高级”选项卡;c进行指定ip地址的控制设置。

  (2)用户访问控制。iis提供了对站点资源进行匿名访问与验证控制设置,web服务器根据设置对用户的身份进行验证,阻止未授权用户与受限制内容建立http连接。具体设置:在web站点的“目录安全性”属性页中选择“匿名访问和验证控制”进行匿名访问允许客户端以iusr-computername为帐号与web服务器建立连接(密码随机提供)。对于非匿名访问,有三种验证方式:基本验证,允许用户名及密码以未加密(明文)方式发送;简要验证,仅在域控制器的域中被支持,它通过网络发送经过混编的值(即利用“散列算法”计算的消息摘要)而不是密码进行验证。集成windows验证,使用安全套接字层(ssl)自动加密用户名和密码。

  (3)防火墙技术。防火墙的目的是为内部网络或主机提供安全保护,阻止对信息资源的非法访问,强制所有连接都必须经过此保护层。防火墙包括包过滤和代理两种,包过滤主要是针对特定ip地址的主机所提供的服务,其基本原理是在网络传输的ip层截获往来和ip包信息,确定是否对此ip包进行转发。代理的基本原理是对web服务单独构造一个代理程序,不允许客户程序与服务器程序直接交互,必须通过代理程序双方才能进行信息的交互。在实际构建时,通常由过滤器提供第一级的安全防护,再由代理服务器提供更高级的安全防护机制。

  3.审核与监视技术。安全审核负责监视系统中各种与安全有关的事件,生成安全日志,并提供查看安全日志的方法。通过分析安全日志,可以发现并阻止各种危及系统安全的行为。windows2k默认安装下,安全审核是关闭的。要进行审核,必须先确定审核策略,指定要审核的安全事件的类别。具体的设置:在“管理工具-本地安全策略-本地策略-审核策略”中打开必要的审核。除了安全日志,系统日志和应用程序日志也是很好的监视工具,它们记录了用户自登录开始直到退出的整个操作过程,为网络安全分析提供可靠的依据。

  4.ssl安全机制。ssl (secure socket layer)是一个运行在http层和tcp层间的安全协议,确保传递信息的安全性。ssl是工作在公共密钥和私有密钥基础上的,任何用户都可以获取公共密钥来加密数据,但解密数据必须要通过相应的私有密钥。目前,ssl已被视为internet上web浏览器和服务器的标准安全性措施。由于ssl技术已建立到所有主要的浏览器和web服务器程序中,因此,仅需安装数字证书或服务器证书就可以激活服务器功能。建立ssl安全机制后,只有ssl允许的客户才能与ssl允许的web站点进行通信,浏览器连接到使用https://的地址,而不是url中的协议。

  5.关闭不用的服务和协议,堵上系统的漏洞和后门。“尽量少开没用到的服务”,如果开启了某个服务,就要提防该服务可能引起的漏洞。同时要定期下载操作系统、iis、asp和dbms最新漏洞的补丁,将可能发生的安全隐患减到最少。

  (二)asp程序设计安全技术

  asp程序设计的安全主要涉及两个方面:一是asp源代码的安全,二是asp程序设计中的安全。常见的安全技术如下:

  1.用户名、口令机制。用户名、口令是基本的安全技术,在asp中常采用form表单提交用户输入的帐号和密码,与用户标识数据库中相应的字段进行匹配。

  2.cookie的安全性。为防止非法用户访问合法用户的会话变量,服务器为每个sessionid指派一个随机生成号码。每当用户的web浏览器返回一个sessionid cookie时,服务器取出sessionid被赋予的数字,检查与存储在服务器上的生成号码是否一致,如果不一致则不允许用户访问会话变量。同时,应加密重要的sessionid cookie。一旦黑客截获了用户的sessionid cookie,就能假冒该用户开始一个活动会话。

  3.注册验证。为防止未注册用户绕过注册界面直接进入应用系统,常利用session对象和http头信息来实现安全控制。当访问者通过身份验证页面后,就把session对象的sessionid属性作为一个session变量存储起来,当访问者试图导航到一种有效链接的页面时,可将当前的sessionid与存储在session对象中的id进行比较,如果不匹配,则拒绝访问。如在session(“id”)中保存着第一次链接的sessionid,<%if session.sessionid<>session(“id”) then response.end%>’拒绝访问。

  4.页面缓存管理。如果浏览器设置了“浏览网页时首先查看本地缓冲区里的页面”,就给非法用户提供了越权浏览的机会。因此,重要的web页面(如身份验证页面)必须禁止页面缓存,强制浏览器每次向web服务器请求新页面。利用asp的response对象的expires属性和clear方法可解决此问题。具体设置:response.expires=0 rsponse.clear,expires表示缓存页面的有效期, 0表示立即过期,clear表示清空缓冲区。

  5.asp脚本加密技术。对asp页面加密是防止asp源代码泄露的重要方法,常用方法有两种:一是asp2dll技术。其基本思想是利用vb6.0提供的activexdll对象将asp代码进行封装,编译为dll文件,在asp程序中调用该dll文件。二是利用微软提供的script encoder加密软件对asp页面进行加密。

  6.屏蔽数据库路径信息。为防止数据库路径和名称随asp源代码失密而失密,常采用以下技术:a、使用odbc数据源。使用odbc数据源连接数据库的命令是conn.open “dsn名”。b、使用数据链接文件来连接数据库。具体方法是新建一个数据链接文件(假定为abc.udl),打开该文件进行相应的设置,测试连接后,在程序中用语句实现连接:conn.open”file name=路径名:\abc.udl”。c、插入inc文件。将文本连接信息保存在以inc为扩展名的文件中,然后在asp页顶端插入一个包含语句:

  7.置合适的脚本映射。应用程序的脚本映射保证了web服务器不会意外地下载asp文件的源代码,但不安全或有错误的脚本映射易导致asp源代码泄漏。因此,应将用不到的有一定危险性的脚本映射删掉(如*.htr文件及*.htw,*.ida,*.idq等索引文件)。

  (三)数据库端的安全技术

  在asp环境中,常用的后台数据库是access和sql server,下面分别对它们在asp环境下常用的安全技术进行分析。

  1.access数据库的安全

  (1)非常规命名法。为防止数据库被找到,可为access数据库文件起一个复杂非常规的名字,并存放在多层目录下。这样,可以有效阻止通过猜的方式得到数据库文件名。

  (2)为数据库文件编码及加密。为防止他人使用其他工具查看数据库文件,可以对数据库文件进行编码,具体做法是选择“工具→安全→编码/解码数据库”。为数据库设置密码的具体做法:以“独占”的方式打开数据库,在功能表中选择“工具→安全→设置数据库密码”。但是,access的加密机制比较简单,根据其“与某一固定密钥异或形成加密钥”的加密思想,很容易编制解密程序。因此还必须借助于其他安全措施(如身份认证和权限控制)来保证数据库的安全。

  2.sql server数据库的安全

  (1)更改sa口令,取消guest帐号。sa具有对sql server数据库操作的全部权限,但在安装sql server时sa缺省口令为空,为sql server带来了潜在的隐患,应把sa的口令换为更安全的口令,同时不能把sa帐号的密码写在应用程序或者脚本中。

  (2)控制访问权限。定义用户和角色对数据库、数据表和数据列的访问权限,限制用户对表拥有直接的查询、更改、插入、删除权限,可以通过给用户访问视图和执行存储过程的权限,以保证数据库的安全。

  (3)限制sql server自带的存储过程。在sql server攻击中有一类是构造特殊字符串调用sql server系统中master数据库自带的存储过程来获取权限。如下面的字符串使用xp_cmdshell存储过程调用系统的net命令将test帐号加入管理员组。username=’;exec master.dbo.xp_cmdshell ‘net localgroup administrators test /add’:--。因此可以去除或限制sql server系统中自带的存储过程。

  (4)加强数据库访问日志的监视,定期备份数据库。审核数据库登录事件的“失败和成功”,在实例属性中选择“安全性”,将其中的审核级别选定为全部,这样在数据库系统日志里就详细记录了所有帐号的登录事件,一旦出现问题能够查出原因,及时补救。同时,制订完整的数据库备份策略,在必要的时候能够实现对数据库的恢复。

  三、结语

  asp环境下的安全问题应从系统的全局进行分析和考虑,既要保证系统安全,又要取得良好的系统性能。本文从服务器端、数据库端、asp程序设计三个方面对asp安全技术进行分析和总结,但随着新的攻击手段和方法不断涌现,要构建一个面面俱到的安全体系是很困难的,因为一种技术只能解决一或几个方面的问题。因此,asp的安全应侧重于预防,规范自己的编程习惯,及时地堵上系统漏洞,定期进行风险评估,安装入侵检测系统等预防措施能及时有效地进行入侵防范。

  参考文献

  [1]陈婧,等.基于asp技术的mis安全机制研究[j].情报杂志,2003,(8).

  [2]华军,等.基于asp技术网站建设的安全性研究[j].计算机工程和应用,2003,(33).

  [3]张念鲁,等.web程序设计教程[m].北京:高等教育出版社,2004.

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页