Web应用安全性概述ASP.NET的身份验证与授权ASP.NET的成员资格技术基于角色安全性与数据访问安全性1.Web应用的安全性问题2.解决Web应用安全问题的方法3.IIS的身份验证与安全攻击者的非法攻击◦内部攻击者:内部员工、病毒(包括木马和蠕虫)◦外部攻击者:电脑黑客或破解者常见类型攻击◦技术型:拒绝服务攻击、计算机自动攻击、病毒、蠕虫、木马、安全漏洞◦非技术型:社交工程安全威胁的分类(STRIDE模型)◦Spoofing(身份欺骗)◦Tampering(篡改数据)◦Repudiation(否认)◦InformationDisclosure(信息泄漏)◦DenialofService(拒绝服务)◦ElevationofPrivilege(特权升级)安全技术◦身份验证◦授权◦审核:日志支持◦保密:加密技术◦完整性◦认可IIS的身份验证管理◦匿名访问:以Internet来宾用户(IUSER_计算机名)访问◦集成Windows身份验证:企业内部网使用◦基本身份验证:明文传送用户名/密码,安全性低◦摘要式身份验证:MD5协议传送加密的用户名/密码IIS的授权管理◦访问权限:包括读取、写入、目录浏览、脚本资源访问、记录访问和索引资源等;◦执行权限:可精确地控制程序和脚本的运行1.ASP.NET的身份验证和授权概述2.ASP.NET的身份验证与授权的配置3.ASP.NET的表单身份验证a)ASP.NET的身份验证b)ASP.NET的授权机制(1)Windows身份验证直接利用Windows系统的用户管理功能达到身份验证,是最快的身份验证模式。它适合Intranet、适合于Web应用程序的后台业务管理。(2)Forms身份验证它通过登录页面实现身份验证。适合于Internet用户。(3)Passport身份验证它由.NetPassport服务来验证用户身份,通过验证后返回验证凭据。适合于多个站点的一次性登录管理。最慢的身份验证方法(1)文件授权◦内置文件授权模块(即FileAuthorizationModule),通过检查Web资源的访问控制列表(ACL),以确定用户是否具有访问该资源的权限。◦只能用于Windows身份验证。(2)URL授权◦内置URL授权模块(即UrlAuthorizationModule)执行授权,检查远程用户或角色是否具有访问特定URL资源的权限。◦适用于Forms身份验证A.ASP.NET身份验证的配置B.ASP.NET授权的配置在配置文件Web.config中:system.webauthenticationmode=Windows//system.webmode:Windows/Forms/Passport/None在配置文件中使用authorization元素进行允许或拒绝访问的设置allow或deny元素的属性:◦users用来指定用户,roles用来指定角色指定用户或角色时可使用通配符:◦*:在allow或deny中表示允许或拒绝任何人访问◦?:在allow中允许匿名用户访问,在deny中表示拒绝未授权的用户访问注意:授权时,可针对应用程序级授权,也可以针对页面级授权。其中,后者使用locationpath=…元素配置。例P2351.表单身份验证的工作机制2.启用表单身份验证3.为表单身份验证自定义验证逻辑使用表单身份验证时,首先显示登录页面。提交用户名和密码后,ASP.NET执行表单验证模块并创建表单验证对象来管理身份验证。表单验证对象(FormsAuthentication)的常用方法:◦Authenticate():将账户信息与配置文件中的账户信息进行比对◦RedirectFromLoginPage()|RedirectToLoginPage()◦SignOut():退出登录状态并删除验证凭据。ASP.NET允许自定义程序逻辑,将用户名和密码与位于数据库、活动目录或注册表中的账户信息进行比较。通过验证时,验证凭据以Cookie或QueryString的形式返给客户端,当再次请求访问时将自动被提交给服务器。若验证凭据失效或丢失,则需要重新登录。例:system.webauthenticationmode=Formsformsname=LoginloginUrl=Login.aspx//authenticationauthorizationdenyusers=?//authorization/system.web例10-1步骤:◦1:准备工作(包括建数据库和存储过程)◦2:修改配置文件,启用表单身份验证,同时拒绝匿名访问◦3:新建类文件Users.cs,定义Validate()方法以实现用户身份验证◦4:设计登录页Login.aspx,调用Validate方法,实现用户的登录验证。◦5:测试1.ASP.NET成员资格概述2.ASP.NET成员资格的配置3.ASP.NET登录控件的使用ASP.NET成员资格的功能成员资格的架构Membership类的成员①可以创建新用户和密码②自动管理成员资格信息(包括用户名、密码等)。③与表单身份验证集成,以零编程方式开发身份验证系统。④提供密码管理功能,包括创建、更改和重置密码。⑤经验证的用户标识,可以与ASP.NET个性化设置和角色管理(授权)系统集成应用。⑥允许自定义成员资格提供程序,自我管理和维护成员资格数据。注意,默认的成员资格数据存储在SQLServerExpress的ASPNETDB.MDF数据库中。使用aspnet_regsql.exe可恢复或重新安装于SQLServer2005之中。Membership类用于验证用户凭据并管理用户设置(如密码和电子邮件地址)。Membership类可以独立使用或与FormsAuthentication类一起使用以创建一个完整的Web网站的用户身份验证系统。常见属性/方法使用成员资格的步骤:◦S1:配置身份验证和授权,要求启用Forms身份验证并指定哪些页或文件夹受到保护;◦S2:根据需要在配置文件中指定要使用的成员资格提供程序并设置相关选项;◦S3:为成员资格定义用户账户,可使用成员资格控件来设计诸如新用户注册、登录、修改密码等页面,以最终实现用户管理。成员资格的配置◦例10-2CreateUserWizard控件Login控件LoginView控件LoginStatus控件LoginName控件ChangePassword控件PasswordRecovery控件功能:创建新用户注册页(如Register.aspx),以收集用户提供的注册信息,并把新用户添加到成员资格系统中。注意:使用默认成员资格提供程序时,注册信息将写入aspnetdb数据库的相关数据库表中。功能:可用于创建用户登录界面(如登录页或主页。注意:该控件默认使用成员资格来进行身份登录验证,不需要编程;也允许在该控件的Authenticate事件中自定义的身份验证逻辑。功能:向匿名用户和登录用户显示不同的信息。该控件包括了两个模板:AnonymousTemplate和LoggedTemplate。功能:为没有通过身份验证的用户显示“登录”超链接,为通过身份验证的用户显示“注销”超链接。功能:用来显示该用户的登录名。功能:用来更改用户的密码,支持发送关于新密码的电子邮件。功能:根据用户注册时所使用的电子邮件地址来找回遗忘了的密码。当使用哈希算法加密时,只能找回一个新密码。基于角色安全性概述ASP.NET的角色管理与配置数据访问安全性角色◦角色是一群具有相同的访问权限的用户的总称。使用角色来管理授权的好处:(1)角色只考虑用户所执行的相同操作;(2)当用户可能有多个角色时,仍然以角色为单位定义访问权限,那些具有多个角色的用户将通过自动组合各角色访问权限而授予;(3)使用角色可以灵活地更改特权、添加和删除用户。ASP.NET的角色管理机制(1)Roles类:用于角色的常规管理功能,包含CreateRole、AddUsersToRoles、IsUserInRole、GetUsersInRole、RemoveUserFromRole、DeleteCookie等。(2)RoleProvider类:为可供角色管理服务使用的数据提供程序定义功能。(3)RolePrincipal类:提供了存储当前用户的角色信息以及从Cookie或数据库中管理角色信息的检索功能。(4)RoleManagerModule类:用于向Page.User属性中添加角色信息,能够自动创建RolePrincipal对象并将其附加到当前上下文中。该类拥有一个GetRoles事件,该事件允许向当前用户上下文中自定义添加角色的程序逻辑启用角色管理:roleManagerenabled=truecacheRolesInCookie=true/创建基于角色的访问规则authorizationallowroles=members/denyusers=*//authorization在运行时使用角色◦ASP.NET自动生成身份验证凭据并且将用户信息保存到Page.User属性中。启用角色后,ASP.NET将查找当前用户的角色。客户端的安全问题(1)脚本攻击(2)SQL攻击(3)防范措施服务器的安全问题(1)网站服务器的安全问题(2)数据库服务器的安全问题