requestEncoding="任一有效的编码字符串"
responseEncoding="任一有效的编码字符串“
fileEncoding="任一有效的编码字符串“
culture="任一有效的区域字符串"
uiCulture="任一有效的区域字符串"/>
元素控制ASP.NET中的验证设置。
ASP.NET中的身份验证可分为Windows验证、Passport验证、Forms验证和匿名验证。
元素允许您指定哪些帐户或角色被授权访问配置文件范围内的资源。
元素支持2个子元素,每个子元素有3个属性。
更新数据库连接配置
连接字符串存入web.config中
修改数据DBHelper文件中数据连接的设置代码
加密解密该连接字符串
数据库连接字符串存储于
读取数据库连接的方法
注意事项:
使用ConfigurationManager需要引入System.Configuration类库;
数据访问层的类库引用该类需要手动添加System.Configuration类库的引用。
3、配置文件小结
根据配置文件包含的设置所应用的范围,可将其划分为两类:
machine.config和web.config。
在配置文件中,所有的配置信息都驻留在和根XML标记之间。
标记间的配置信息分为两个主区域:
配置节处理程序声明和配置节设置区。
4、简单介绍Web应用程序面临的安全威胁
电子欺骗
篡改
否认
信息泄露
拒绝服务
提升权限
5、图示讲解ASP.NET应用程序的安全架构
6、讲解身份验证(Authentication)的概念
身份验证是指系统为了要将访问局限于特定的用户,就必须能够标识他们。
这并不是说系统必须知道用户的全部信息,而是指把每个用户区别开来,识别出哪些用户应该访问,哪些用户不能访问。
身份验证从实施的范围上划分,可以分为:
ASP.NET身份验证;
企业服务身份验证;
SQLServer身份验证,
而从技术上划分,可以分为:
Windows身份验证;
Forms身份验证;
Passport身份验证和匿名验证。
(1).Windows身份验证(WindowsAuthentication)
适用于企业内部Intranet中使用,适合于用户数目固定,且这些用户拥有已存在的Windows用户帐户的情况。
它的缺点是它不能通过代理服务器工作,因此对于大多数的Web应用程序不合适。
(2).Forms身份验证(FormsAuthentication)
它可以支持很多浏览器且在Internet上有着广泛的支持,主要是基于Cookie来实现用户身份验证,它的主要缺点是在于它需要自己编写身份验证逻辑(不管是自行编写的代码或登录系列控件中内置的代码)。
(3).Passport身份验证(PassportAuthentication)
Microsoft.NETPassport是一种用户身份验证服务,站点用户可使用该服务创建单次登录名和密码,从而方便地访所有启用.NETPassport的网站和服务。
启用.NETPassport的站点依靠.NETPassport中央服务器来验证用户,而不是主持和维护它们自己的专用身份验证系统。
用户使用同样的用户名和密码就可以登录到许多Internet站点,例如:
Hotmail和MSN都使用.NETPassport来验证用户。
缺点:
(1)使用这个服务要付费;
(2)需要每个用户都要有一个有效的.NETPassport账户
7、讲解授权(Authorization)的概念
在对提交请求的用户进行身份验证后,已经可以确定和识别用户的身份,下一步即需要确定用户可以访问哪些资源和操作,称为授权。
授权将决定是否允许用户访问请求的资源。
授权从实施的范围上划分,可以分为:
ASP.NET授权
企业服务授权
SQLServer授权
从技术上划分,可以分为
URL授权
文件授权
主体授权。
8、图示讲解安全检查的处理流程
图示讲解ASP.NET中安全检查的执行流程
9、介绍Windows身份验证:
如果开发一个公司的内部网,那么就可以基于现存的Windows用户帐号和用户组来使用Windows身份验证。
(1)配置IIS服务器的安全性
(2)配置Windows的安全性
(3)启用Windows验证
(4)授权配置
使用Windows验证可以借助Windows的用户验证机制来开发应用程序,可以减少代码编写的工作量,其比较适合在局域网环境内使用。
使用Windows验证,验证操作分为两个步骤:
一是IIS验证,二是ASP.NET验证。
10、讲解Forms验证的处理流程
Forms验证,有时也称为窗体验证或表单验证,它是在应用开发时最常用的身份验证方式,该种方式可以把用户验证信息灵活的保存到Web.Config文件、XML文件或数据库表等多种存储结构中。
Forms身份验证需要使用System.Web.Security命名空间中的以下几个类
FormsAuthentication类:
包含了用于执行表单验证的多个静态方法,下面列出几个常用的公共方法
publicstaticboolAuthenticate(stringname,stringpassword);
publicstaticvoidRedirectFromLoginPage(stringuserName
boolcreatePersistentCookie);
publicstaticvoidSignOut();
FormsAuthenticationTicket类:
表示针对表单验证的Cookie所使用的授权令牌,下面是几个常用的属性。
CookiePath属性:
验证令牌Cookie的路径
Expiration属性:
验证令牌Cookie过期的日期
Expired属性:
表示当前验证令牌是否过期
IsPersistent属性:
表示验证令牌是否存储在持久性的Cookie中
IssueDate属性:
表示包含令牌的Cookie的创建日期
Name属性:
与令牌有关的用户名
FormsIdentity类:
表示通过表单验证后的用户身份,下面是几个常用的属性。
IsAuthenticated属性:
表示是否已通过验证
Name属性:
已通过验证的用户名
Ticket属性:
获取与当前请求关联的FormsAuthenticationTicket。
FormsAuthenticationModule类:
用于表单验证的真正模块,其Authenticate事件:
定义在身份验证过程中引发的事件。
启用Forms身份验证需要配置IIS使用匿名身份验证
IIS—默认网站,右键,目录安全性
要为应用程序启用基本的表单验证,必须完成如下三个步骤:
①修改应用程序根Web.Config文件中authentication配置节来应用程序设置验证模式。
②通过修改适当目录下的Web.Config文件中的authorization配置节来拒绝匿名用户访问应用程序中的一个或多个目录。
③创建一个登录页面,包含一个可以让用户输入其用户名和密码表单。
在配置节中配置
timeout:
以整数分钟为单位的时间量,超过此时间量,Cookie将过期。
默认值是30。
protection:
用于保护Cookie数据的方法。
有效值如下所示:
a.All(默认值),同时使用数据验证和加密来保护Cookie。
配置的数据验证算法基于元素。
如果三重DES可用并且密钥足够长(48位),则使用三重DES进行加密。
b.None,用于仅将Cookie用于个性化并且安全要求不高的站点。
加密和验证都可以被禁用。
尽管以此方式使用Cookie需谨慎,但对于使用.NET框架实现个性化的任何方法,此设置提供了最佳性能。
c.Encryption,使用TripleDES或DES加密Cookie,但不对Cookie进行数据验证。
这类Cookie容易受到精心选择的纯文本的攻击。
d.Validation,不加密Cookie的内容,但验证Cookie数据在传输过程中是否未被更改。
若要创建Cookie,验证密钥在缓冲区中与Cookie数据连接,并且计算出MAC并将其追加到输出的Cookie。
Forms验证,有时也称为窗体验证或表单验证。
使用该种方式开发人员可以轻松的实现一个用户注册和认证系统。
Forms验证依赖于浏览器Cookie来确定用户的身份。
Forms身份验证需要使用System.Web.Security命名空间中的以下几个类:
FormsAuthentication类、FormsAuthenticationTicket类、FormsIdentity类、FormsAuthenticationModule类。
11、介绍用于成员关系管理的数据库:
aspnetdb数据库:
一个MicrosoftSQLServerExpressEdition文件,用于存储应用程序使用的所有成员关系和角色管理信息。
登录系列控件使用的后台数据库。
该数据库提供了一系列数据表和几十个存储过程实现登录中的一系列功能。
它可使用WAT建立。
ASP.NET2.0中自带的Web网站管理工具WAT(WebSiteAdministrationTool),用来帮助开发人员对Web应用程序进行可视化配置和管理。
图示讲解aspnetdb数据库结构。
12、演示在ASP.NET网站管理工具中管理用户和权限
13、讲解角色与授权:
实例演示
授权设置可应用到整个Web应用程序中,除非它们被包括在节或网站子目录中web.config文件中。
用户可在节中增加多个和节来允许或拒绝对用户和角色的访问。
用户或角色的意义是由ASP.NETWeb应用程序配置使用的IIS身份验证类型来决定的。
对于集成Windows身份验证,用户是计算机或域用户,角色是计算机或域组。
实例练习:
某站点下有角色:
Admin、User、VIP等,现该网站开发一个新功能(该功能所有页面单独出现在Fun目录下),只允许VIP用户访问。
现在由于管理需要,Admin组中的Administrator用户要开通访问权限,请编写配置文件。
14、介绍登录系列控件:
Web站点常见功能包括用户登录、创建新用户、显示登录状态、显示登录用户名、更新或重置密码等。
在ASP.NET2.0中,新增了一组登录系列控件,可以无需编写一行代码就能实现相应的用户界面和功能。
同时,这些控件还内置了丰富的成员对象,提高了应用灵活性,另外这些控件还加强了安全方面的控制。
例如:
默认情况下,登录是以纯文本形式工作于HTTP上,若对安全性需要较高,可使用SSL加密的HTTPS。
实例演示登录控件的使用
CreateUserWizard控件
Login控件
LoginName控件
LoginStatus控件
LoginView控件
PasswordRecovery控件
ChangePassword控件
4、小结
1.安全性的概念
为了保证使用ASP.NET开发的应用程序的安全性,Microsoft公司提出了一套安全体系,其基本概念有身份验证(Authentication):
系统实现对用户的标识。
和授权(Authorization)等:
确定用户可以访问哪些资源和操作,称为授权。
ASP.NET中的安全认证的执行流程是:
首先进行身份认证模块的处理,如果通过,则进入授权模块的处理,接着进入页面处理模块。
其中身份认证则包括Windows身份认证,Forms身份认证和Passport身份认证,而授权则包括文件授权和URL授权。
2.使用Windows验证
使用Windows验证可以借助Windows的用户验证机制来开发应用程序,可以减少代码编写的工作量,其比较适合在局域网环境内使用。
使用Windows验证,验证操作分为两个步骤:
一是IIS验证,二是ASP.NET验证。
当IIS接到客户端请求时,IIS使用基本、简要或集成Windows身份验证对客户进行身份验证。
如果客户已通过身份验证,则IIS将已验证的请求移交给ASP.NET。
否则IIS直接拒绝访问。
当客户端请求进入ASP.NET后,ASP.NET应用程序使用从IIS传递来的访问标记模拟正在请求的客户,并依赖于NTFS文件权限来授予访问权。
实现Windows验证可以使用以下4步:
①配置IIS服务器的安全性
②配置Windows的安全性
③启用Windows验证
④授权配置
3.实现基于表单的验证
Forms验证,有时也称为窗体验证或表单验证。
使用该种方式开发人员可以轻松的实现一个用户注册和认证系统。
Forms验证依赖于浏览器Cookie来确定用户的身份,当用户向服务器请求资源时,Web服务器将从用户机器的Cookie中提取认证信息,如果认证信息不存在,则将页面重定向到应用系统的登录页面,如果用户输入了一个有效的用户名和相应的密码,则将自动把该用户重定向到最初的页面。
要为应用程序启用基本的表单验证,必须完成如下三个步骤:
①修改应用程序根Web.Config文件中authentication配置节来应用程序设置验证模式。
②通过修改适当目录下的Web.Config文件中的authorization配置节来拒绝匿名用户访问应用程序中的一个或多个目录。
③创建一个登录页面,包含一个可以让用户输入其用户名和密码表单。
作业:
实现留言管理后台的配置和管理。