利用Membership API 编程实现asp.net网站安全管理探析

2016-02-05 07:44郭建明
网络安全技术与应用 2016年7期
关键词:管理工具控件编程

◆郭建明

(甘肃机电职业技术学院 甘肃 741001)

利用Membership API 编程实现asp.net网站安全管理探析

◆郭建明

(甘肃机电职业技术学院 甘肃 741001)

在信息化高度发达的今天,网络安全无疑是人们最为关心的问题,怎么样有效的保障好数据安全是信息化发展最为核心问题。在用VS2010开发asp.net网站程序时,可以用系统自带的登录控件及“asp.net网站管理工具”来实现网站程序的安全管理,此方法简单,但在网站发布及灵活性方面存在储多不便,本文主要探讨如何通过Membership API编程方式实现asp.net网站的安全管理。

Membership API;安全管理;角色权限;访问规则

0 引言

ASP.NET应用程序是一种开放式的B/S架构应用程序,但这种开放式的访问方式无疑会给程序的安全运行带来一定的隐患。在用VS2010开发asp.net网站程序时,可以用系统自带的登录控件及“asp.net网站管理工具”来实现网站程序的安全管理,此方法简单,但在网站发布及灵活性方面存在诸多不便,以及在一些复杂的应用环境中,仍然需要通过编写程序来实现特定的网站安全管理。如何以更加有效、灵活的方式实现网站安全管理,是创建B/S应用程序时必须要认真考虑的一个重要问题。

1 传统的网络安全认证方法

与传统的C/S架构应用程序不同,ASP.NET应用程序由一系列单独的网页组成,如果没有必要的安全设置,任何一个用户都可以直接通过网页的URL访问页面,则安全无从谈起。

在传统的asp及asp.net用户身份认证中,一般采用Session对象保存用户登录状态和用户角色等信息[1]。当用户访问除了登录页面之外的其它页面时,程序首先检测Session对象中保存的数据,如果Session中保存的数据不正确,则跳回登录页面,如果正确,则从Session中读取用户状态及角色信息,根据不同角色返回不同的页面或同一页面中不同的内容。

在一些要求不太严格的ASP程序中,也有通过查询字符串或通过Cookie存储用户身份认证通过的,但这是及不安全的做法,在这两种处理方式中用户都有可能篡改验证数据,伪造已通过认证的假象。

2 ASP.NET基于角色的安全管理

从ASP.NET2.0开始出现了基于角色的安全管理技术,并提供了7个用于身份识别的控件和一个网站管理工具。使于基于角色的安全管理技术,能及大地提高开发效率,提升网站安全级别。基于角色的安全管理技术主要包括以下两个方面的内容:

(1)用户身份认证:主要包括新用户注册、用户登录、修改密码、显示状态和其它信息等。这些操作基本上都可以通过工具箱“登录”选项卡中的7个控件来完成。

(2)用户权限管理:主要包括为用户分配角色和为角色分配可访问的资源等。

使用基于角色的安全管理技术,重点在于开发人员在规划创建ASP.NET站点时,需要根据资源的级别不同使用树形目录的方式进行组织。需要在根站点下设置若干子目录,将安全等级不同的文件存放在不同的子目录中,然后为每个子目录添加一个w eb.config文件,利用该文件配置本目录的安全规则。

在vs2010中默认的方法是通过“ASP.NET网站管理工具”及登录控件配合来完成添加用户、添加角色、编辑访问规则等信息。同时系统会自动在App_Data目录下创建一个名为aspnetdb.mdf的数据库文件,此数据库是系统自动创建,专门用于存储用户、角色等信息,我们可以通过“ASP.NET网站管理工具”对其进行维护。

但是,系统默认创建的aspnetdb.mdf数据库为SQLEXPRES S版,存储在站点的App_Data目录,数据库连接名为LocalSqlS erver,这给我们站点的发布及数据的迁移带来一些新问题,再者在一些复杂的应用环境中,必须通过编写程序来实现特定的网站安全管理。下文主要探讨如何通过Membership API编程的方式实现用户、角色的安全管理。

3 Membership API编程概述

Membership API是Membership类中公有方法的集合,使用Members API能够实现用户、角色的常规管理,如创建用户、删除用户、创建角色等。在vs2010中可以通过Login登录控件能实现的功能,通过Members API都能以编程的方式实现,而且更加灵活强大。想通过Membership API编程的方式实现用户、角色的常规管理,需要从以下几个方面理解:

3.1 命名空间的引用

Membership类包含于System.Web.Security命名空间,使用其方法前应使用using命令在应用程序中引用该命名空间,即

Using System.Web.Security;

3.2 将安全数据库(AspNet.mdf)信息导入系统数据库

系统默认下安全数据库与系统数据库是分开的,为方便后续数据库的管理及迁移,应将安全数据库信息导入系统数据中。

为完成安全数据导入,需要运行Asp.net SQL Server注册工具(aspnetregsql.exe),并通过向导完成相应的导入操作。该工具为一个单独的工具程序,默认存放在C:WindowsMicrosoft.NE TFrameworkv4.0.30319中(注,VS版本不同,存放位置也不同),找到aspnet_regsql.exe文件并双击打开,启动ASP.NET SQL Ser ver安装向导,在欢迎对话框中直接单击“下一步”按钮,打开如下图1所示的“选择服务器的数据库”对话框,输入SQL Server服务的计算机名称或IP地址,填写对数据库有管理权限的用户名和密码,并在下拉列表中选择你的系统数据库名称(如本例假定为ABC),如下图1所示。

图1 ASP.NET SQL Server安装向导配置

然后单击“下一步”按钮,在打开的确认对话框中核对前面输入和选择的项目后单击“下一步”按钮,在最后出现的完成对话框中单击“完成”按钮,结束安全信息数据库的导入操作。操作完成后,在数据库管理界面中可以看到如图2所示的相关安全数据表。

图2 相关安全数据表

3.3 在web.config中配置Membership类

在web.config中的Membership类的相关配置尤为关键,在<connectionStrings>节中添加数据库连接,具体如下:

然后在system.web节中配置如下代码:

通过以上几个步骤的配置,就完成了安全数据库与网站数据库合并,修改了vs2010默认安全连接,接下来通过编程的方式实现网站安全管理。

4 编程方式完成用户、角色相关操作的具体代码实现

4.1 编程方式添加用户的具体代码实现

在网站中添加一个Web窗体,在Web窗体中添加一个按钮,双击按钮进入窗体后台代码编辑界面,首先引入命名空间:

using System.Web.Security;

编写获取错误提示信息的方法GetErrorMessage()。

在窗体中设计如下图3所示创建用户界面,所用控件均为系统自带文本框控件,并按次序分别命名为Username、Password、Email、Questions、Answer。

图3 创建用户界面

在按钮的单击事件中添加如下代码:

MembershipCreateStatus status;

Membership.CreateUser(Username.Text,Password.Text,E mail.Text,Question.Text,

Answer.Text,false,out status);

Response.Write(GetErrorMessage(status));

运行窗体,然后在创建用户表单中输入相应的值,单击“创建用户”按钮,则该安全用户编程创建成功。

4.2 编程方式完成角色管理的代码实现

角色管理是指创建、删除、查询、分配角色的操作。这些操作可以通过Roles类中提供的一系列方法来完成。所有操作均基于引用了System.Web.Security命名空间,且必须建立在完成了第3节所有配置的基础之上。

(1)创建新角色

创建一个新角色可以使用Roles类的CreateRole()方法来实现,其语法格式为:

Roles.CreateRole(RoleName);

其中,RoleName参数表示希望创建的新角色名称。例:

Roles.CreateRole(”admin”);

则创建了一个名为admin的角色。

(2)为用户分配角色

为数据库中现有用户分配角色可以使用Roles类的AddUser ToRole()方法来实现,例:

Roles.AddUserToRole(“郭某某”,”admin”);

意为将用户郭某某添加到admin角色中。

依此做法,都将能以编程的方式完成用户、角色的添加、删除、查询、更新等一系列操作,限于篇幅,此处再不赘述。

5 网站访问管理规则的创建

所谓“网站访问规则”是指为网站中不同的文件夹分配可以访问的用户或角色。为网站创建访问规则可以有两种方法:

5.1 用“asp.net网站管理工具”创建

可以借助“asp.net网站管理工具”可视化界面操作完成对每个文件夹的安全配置,如图4所示。

图4 文件夹的安全配置

注意,此时在“asp.net网站管理工具”中所做的所有操作,都将保存在系统数据库即我们指定的数据库中。

每个目录的访问规则可以由若干条组成,但执行的顺序为自上而下,当某一条目被匹配后后续的条目不再处理,所以设置规则时条目的排列十分重要。

5.2 直接手动配置每个目录的web.config文件

Web.config是一个XML文件,我们随时都可以通过记事本编辑此文件,完成对网站目录的安全配置。例,手动配置网站a dmin目录下的web.config文件,配置内容如下:

<allow roles="超级管理员" />意思为此admin目录超级管理员可以访问,<deny roles="普通用户" />普通用户不能访问。

理解了上述语法含义,程序员就可以轻松的使用记录事本编辑web.config文件,达到修改或创建网站访问规则的目的。

6 结语

本文所探讨内容在win7+vs2010下均测试通过。

总之,实现网站安全管理的手段有很多,但通过Members API以编程的方式实现,将使网站安全管理更加灵活、强大,同时在数据迁移及网站发布方面将带来意想不到的便利。

[1]崔森,关六三,彭炜.ASP.NET程序设计(C#版)[M].北京:机械工业出版社,2013.

猜你喜欢
管理工具控件编程
精益管理工具在手术室耗材管理中的应用
质量管理工具在减少CT停机天数中的应用
编程,是一种态度
元征X-431实测:奔驰发动机编程
基于.net的用户定义验证控件的应用分析
编程小能手
纺织机上诞生的编程
关于.net控件数组的探讨
hosts文件管理工具
现代企业与管理工具的运用