DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 160|回复: 0
打印 上一主题 下一主题

基于ASP.NET的Web应用程序安全性的探讨

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-21 23:44:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 引言    目前,虽然网站的绝大部分资源对浏览者是开放的.但是有些信息则是特别针对某些用户的,例如政府网、企业内部网等,只有特定的用户才能访问。需要使用严密的安全机制来保护,以确定用户访问资源的权限。Web安全性便是为限制只有特定用户群才能访问某些文件而设计。    正确识别用户身份,严密控制用户对资源的访问,是Web应用程序安全性中最重要问题,也是最基本的一环。实现安全操作,必须经过验证、授权和模拟等处理程序完成。2 口令验证    Web安全处理的第一步便是验证,即对于请求信息的用户验证其身份。用户使用证件表明其身份.最常用的就是用户名和密码。在验证用户身份时,若系统不能根据用户的证件确定其身份,则身份验证失败,用户将被拒绝访问;若证件有效,则允许用户进入系统,并被赋予一个合法的已知身份。    口令验证是根据用户知道什么进行验证的一个例子,是目前最广泛的身份验证方法,虽然其安全性比其他几种方法差,但简单易行,如果使用恰当,可以提供一定程度的安全保证。防止口令泄漏是这一方法中的关键问题。    口令一般是由字母、数字和特殊字符等组成的字符串,其选择原则:①用户容易记忆;②难于被别人猜中或发现;③抗分析能力强;④限制使用期限,可经常更换。    目前主要有2种口令生成方法:①由用户自己选择口令。②由系统自动生成随机的口令。前者优点是用户很容易记住它,一般不会忘记.因为所选的口令往往与用户的某些特征有关,如生日、配偶名、电话号码等,正因为这样,口令很容易被猜出来,泄漏的机会较大。较好的方法是设计一个口令生成器,随机地为用户生成口令。这种方法带来的困难是用户记忆非常困难,即使这个字符串不长,要让一个人记住它也不是一件容易的事。口令的管理很麻烦,用户的口令要严格保密,不能被其他用户得到。口令更不能以明文的形式存放在系统中,这样口令很容易泄漏。因此,必须使用数据加密的方法将口令以密文的形式存放在系统中。    ASP.NET提供了3种验证用户的模式,每一种验证模式都是通过一个独立的验证程序实现。3种验证模式分别为Windows、Forms和Passport。Windows验证是通过I2S实现:Forms验证是在开发人员自己的服务器上实现:而Passport验证则是通过微软公司的订阅服务实现。2.1 Windows验证    当用户请求ASP.NET页面时,请求信息首先遇到的是Web服务中的Internet信息服务。Internet信息服务首先验证用户身份,或者将验证工作交给ASP.NET应用程序。这种Windows身份验证过程如图l所示。

    在登录界面中提交按钮的Click事件处理程序中,可检查用户输入的证件资料,从而判断证书资料是否正确,也就是身份验证的过程。根据证件资料不同的存放位置,可以将验证方式划分为以下3种。    (1)在代码中直接验证设计人员可以直接在代码中将用户输入的证件资料一一对比,从而判断用户证件资料是否正确。    (2)利用数据库实现验证在代码中直接对比用户的证件资料,不仅麻烦而且代码也难以维护。当用户很多时,验证会显得十分麻烦。这时,可将用户列表信息先存储在数据库里,然后在login_btn_Click()方法中编写代码从数据库取出用户资料,再逐一对比,如果有相符者,则通过验证。    (3)利用配置文件实现验证在配置文件中,使用子元素的项定义用户名和密码,即将正确的用户证件资料存储在配置文件中。当用户登录时单击“登录”按钮,可以在其Click事件处理程序中调用FormsAuthentication,Authenticate()方法,系统便会自动地将用户所输入的信息与项中的用户名与密码相比较,如果相符,则可通过验证。2.3 Passoort验证    Passport验证是微软公司提供的一种验证服务,其工作原理与窗体验证类似,只是无需创建任何自定义的功能。这两种方法都是在客户端创建Cookie,用于授权。使用Passport验证时,用户将被重定向至Passport登录网页,该页面提供了一个非常简单的窗体让用户填写用户验证资料,窗体将通过Passport服务来检查用户的证件,以确定用户的身份是否有效。如果用户证件通过了验证,则为它在客户端计算机上建立一个验证Cookie。
                          
                       
                          
                                    建立Passport验证的关键一步是正确地设置Web.config文件,使用代码如下所示:

3 授权    用户通过验证,并且取得自己的身份后,就必须检查其是否拥有访问所请求资源的权限,此过程便称为“授权”。例如,在机密的政府机构中,如果有人想进入某些房间,则首先必须检查其是否拥有进入该房间的权限。    在Windows系统中,大部分的文件都会拥有一个访问控制列表。不仅会列出有哪些用户或者用户组访问该资源,而且详细地指出了每个用户或者用户组所能够运行的访问类型一能否读取、写入、修改和删除等。    《图片管理系统》中的权限声明:12级的用户指超级管理员,即可以执行所有操作;11级的用户拥有修改图片权限:10级的用户只有浏览图片的权限。    在ASP.NET中,授权方式主要有2种,它可以依赖Windows指出通过验证的用户可访问哪些资源,称之为文件授权;也可依赖被请求资源的URL,被称为URL授权。下面的这段代码可实现对多个目录的权限控制:

    URL授权由UrlAuthorizationModule HTTP模块控制,该模块的行为由存储于web.config文件的中的设置驱动。在URL授权的最后阶段,需要指出的是,只有ASP.NET资源受到监控。通常,基于URL的授权很少与Windows身份验证一起使用,URL授权对于Forms身份验证则更有效。4 模拟    ASP.NET的另一项重要安全功能便是用户账户模拟。默认状态下,ASP.NET不启用模拟,而是执行所有的代码,应用程序可访问所有的文件与文件夹,这时必须采用其他的安全措施控制访问权限。    图3详细说明了用户为获得安全资源的访问权限需要经历的过程。    使用模拟功能,ASP.NET能够以访问应用程序的用户身份来执行页面。即若用户以“Winters”身份来访问资源,则ASP.NET将把自己模拟成“Winters”来使用服务器上的各项资源,并根据该用户的权限限制或者允许ASP.NET访问某些资源,从而实现数据的安全性。模拟用户的流程图如图4所示。

    ASP.NET应用程序是系统资源的用户,需要访问文件、内存等,因此在默认状态下,ASP.NET应用程序进程有非常大的权限,几乎可访问系统提供的任何资源。但有时可能根据需要通过使用ASP.NET应用程序的用户身份来限制对资源的使用,这便要运用模拟功能,让ASP.NET模拟用户身份运行程序。5 结语    综上所述,是通过开发《图片管理系统》中对ASP.NET安全性的探讨。文章中的例子包括程序代码段都是在开发过程中应用的、经过验证的、也是运行通过的。有关于ASP.NET安全性问题有待于继续探讨。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-17 14:00 , 耗时 0.083730 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表