基于ASP.NET的Web应用程序安全性的探讨
目前,虽然网站的绝大部分资源对浏览者是开放的.但是有些信息则是特别针对某些用户的,例如政府网、企业内部网等,只有特定的用户才能访问。需要使用严密的安全机制来保护,以确定用户访问资源的权限。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所示。
2.1. l 基本身份验证
除了根本不进行验证外,基本身份验证是一种最简单的验证方式,也是一种收集用户证件的行业标准方法。
基本身份验证的步骤:①客户向服务器请求被限制的资源;②Web服务器以“401 unauthoried”进行响应;③客户端浏览器接收到这条信息后,要求用户输入用户名和密码来进行验证;④如果验证失败,用户证件无效,则会返回“2”,重新以“401 Unauthoried”响应;⑤如果验证成功,客户浏览器便通过身份验证,可以访问请求资源。
2.1.2 Windows域服务器的摘要式验证
摘要式身份验证,提供了与基本身份验证同一样的功能,在通过网络往服务器传送用户证件信息时提高了安全性。摘要式验证会使用MD5哈希算法加密来处理用户证件资料。由于此项处理是单向,就算有人从网络上将它们截取下来,也无法解译成原来的用户名与密码,从而保证服务器资源的安全性。
2.1.3 集成Windows身份验证
集成Windows身份验证时,将不会要求用户输入证件。相反,当浏览器连接到服务器后,即将加密后的、用户登录计算机时使用的信息发送给服务器。服务器检查这些信息,以确定用户是否有权访问。
2.2 窗体验证
窗体验证,即验证用户证件资料。在ASP.NET中,可以选择由ASP.NET应用程序通过窗体验证进行身份验证,而不是通过I2S。窗体验证是ASP.NET验证服务,它能够让应用程序拥有自己的登录界面。当用户试图访问被限制的资源时,便会被重定向至登录界面,而不是弹出登录对话框。在登录页面中,可以自行编写代码验证用户的证件资料。
安全处理流程如图2所示。
在登录界面中提交按钮的Click事件处理程序中,可检查用户输入的证件资料,从而判断证书资料是否正确,也就是身份验证的过程。根据证件资料不同的存放位置,可以将验证方式划分为以下3种。
(1)在代码中直接验证设计人员可以直接在代码中将用户输入的证件资料一一对比,从而判断用户证件资料是否正确。
(2)利用数据库实现验证在代码中直接对比用户的证件资料,不仅麻烦而且代码也难以维护。当用户很多时,验证会显得十分麻烦。这时,可将用户列表信息先存储在数据库里,然后在login_btn_Click()方法中编写代码从数据库取出用户资料,再逐一对比,如果有相符者,则通过验证。
(3)利用配置文件实现验证在配置文件中,使用forms>子元素的credentials>项定义用户名和密码,即将正确的用户证件资料存储在配置文件中。当用户登录时单击“登录”按钮,可以在其Click事件处理程序中调用FormsAuthentication,Authenticate()方法,系统便会自动地将用户所输入的信息与credentials>项中的用户名与密码相比较,如果相符,则可通过验证。
2.3 Passoort验证
Passport验证是微软公司提供的一种验证服务,其工作原理与窗体验证类似,只是无需创建任何自定义的功能。这两种方法都是在客户端创建Cookie,用于授权。使用Passport验证时,用户将被重定向至Passport登录网页,该页面提供了一个非常简单的窗体让用户填写用户验证资料,窗体将通过Passport服务来检查用户的证件,以确定用户的身份是否有效。如果用户证件通过了验证,则为它在客户端计算机上建立一个验证Cookie。
评论