ASPNET安全性高级编程 第六章 ASP.NET安全架构

ASP.NET安全架构的主要功能
身份验证和授权
.NET授权提供者
安全上下文中的标识和主体
身份验证模块如何运行
授权模块如何运行
1.身份验证
Windows身份验证
窗体身份验证
Passport身份验证
自定义身份验证过程
2授权
基于角色的授权
身份验证和授权的区别:身份验证是揭示用户标识的过程,而授权则是确定用户访问特权的过程。
3假冒
4综合运用所有功能
当用户首次访问 web站点时他们是匿名用户。
当用户请求非安全资源时,他们可以自动地访问这个资源:这就是非安全的含义。
当用户请求安全资源时,会有以下几个步骤
(1)请求被发送到web服务器
(2)用户提供凭证
(3)如果用户凭证合法,就准许这个用户访问资源,否则,就会提示这个用户使用合适的凭证登录,或者被重定向到一个"被拒绝访问"的Web页
当用户请求一个安全资源,且该资源仅有一个被确认的标识有权访问时,会发生以下步骤
(1)请求被发送到Web服务器由于此用户还没有被确认,所以会被定向到一个登录页
(2)用户提供凭证,这些凭证由身份验证应用程序进行验证
(3)把用户的凭证或角色与被允许的用户或角色列表进行比较,如果用户在列表中,那么他们就被准许访问这个资源,否则,访问就会被拒绝。
(4)被访问的用户要么被提示用被请求资源的合适凭证进行登录,要么被重定向到一个"访问被拒绝"的Web页
启用假冒
向应用程序(web.config)的根级配置文件添加<identity>元素就可以启用假冒
<configuration>
<system.web>
<identity impersonate="true" userName="dotnetjunies/DSeven" password="aspnet">
</identity>
</system.web>
</configuration>

6.2 如何实现.NET安全
1 表示安全上下文
Identity对象表示的是通过身份验证的用户,他的类型取决于身份验证的类型,Windows身份验证使用的是WindowsIdentity对象,而窗体身份验证使用的则是FormsIdentity对象
Principal对象表示的是通过身份验证的用户的组和角色成员。也就是安全上下文

6.23 ASP.NET页面请求中出现的安全事件
6.24内置的身份验证模块
1 DefaultAuthenticationModule模块
2 WindowsAuthenticationModule模块
3 PassportAuthenticationModule模块
4 FormsAuthenticationModule模块
6.25 内置的授权模块
ASP.NET Framework中有两个授权模块类:FileAuthorizationModule类和UrlAuthorizationModule类

于是,我们会想到很多安全措施,比如使用SSL、建立网上银行一样的强认证方式等,但是,对于大部分网站而言,可能这些方法具有一定的困难性,因为要实现这些比较强的安全措施,最起码需要一台服务器,在经济上显然不是小数目。那么,有没有比较经济的方法来解决这类问题呢?答案是肯定的,现在.NET构架在System.Security.Cryptography命名空间里提供了许多加密类可以利用,包括安全的数据编码和解码以及散列法、随机数字生成和消息身份验证。下面,我们来看看几个比较典型的例子,以供参考。 实现ASP.net表单的安全提交 使用ASP.NET环境下的电子邮件功能,我们可以容易的实现发送电子邮件。可能我们会说,不用ASP.NET,直接使用HTML,也可以实现以上功能。其实,这是完全不一样的:使用HTML,用户提交信息的时候,是调用客户端的邮件收发软件,使用用户的邮箱发送表单信息,如果用户没有邮箱或者用户没有邮件收发软件,就不能提交信息;而采用ASP.NET,可以使用服务器端(程序设计者)提供的邮箱和SMTP服务器,也不需要客户安装邮件收软件,一切都直接在服务端完成,显然更加适合我们的要求。现在,我们就来看以上功能的代码实现。首先,我们来看网页界面实现的关键代码: <Form id="form1" runat="server"> 姓名: <asp:TextBox id="txtFname" runat="server" /> 地址: <asp:TextBox id="txtAddr" runat="server" /> 内容: <asp:TextBox id="txtContent" runat="server" /> <asp:Button id="btnEmail" Text="提交" onclick="doEmail" runat="server" /> </Form> 以上只是很简单的几个提交项,在实际中,我们可以根据需要增加。还是根据上述例子,因为需要用到电子邮件功能,所以,我们需要引入Email名字空间:<%@ Import Namespace="System.Web.Mail" %>;然后,我们来实现按钮btnEmail的点击事件: Sub doEmail(Source as Object, E as EventArgs) Dim sMsg as String sMsg+="提交信息:" & vbcrlf sMsg+="姓名 :" & txtFname.Text & vbcrlf sMsg+="地址: " & txtAddr.Text & vbcrlf sMsg+="内容: " & txtContent.Text & vbcrlf Dim objEmail as New MailMessage objEmail.To="whpub@tom.com" objEmail.FROM="from@tom.com" objEmail.SUBJECT="提出意见" objEmail.BODY=sMsg objEmail.BodyFormat = MailFormat.Text
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值