[来源:J.D. Meier's Blog]
微软刚推出了一个ASP.NET 2.0 Internet 安全之参考实现( ASP.NET 2.0 Internet Security Reference Implementation)。这是个配有全部编码和指导性文档的样本应用,其宗旨是示范在实际应用中如何应用模式和实践之安全向导中的最佳实践。这个应用是从Pet Shop 4发展而来,使之适用于Internet。该应用使用了表单认证,用户和角色数据是储存在SQL数据库里的。
该应用可以在其官方网站上下载:
ASP_NET 2_0 Internet Security Reference Implementation: Home
http://www.gotdotnet.com/codegallery/codegallery.aspx?id=48f35de8-cd92-4ac6-9144-12d5a13f22ff [找不到链接]
下载的内容包括三部分
1。VS 2005方案和编码
2。Internet 安全参考实现的指导性文档
3。场景(Scenario)和方案文档
在安全参考实现的指导性文档里,涉及的设计决策包括下述分类
1。认证
2。授权
3。输入和数据验证
4。数据访问
5。异常管理
6。敏感数据(Sensitive Data)
7。审记和日志记录(Auditing and Logging)
在每个分类里又具体列出了详细的设计决策,譬如,在认证方面,要做的决定包括
1。使用表单认证
2。使用SQL成员提供器
3。使用SSL来保护身份验证信息和认证cookies
4。不直接存储明文密码
5。强制使用安全性强的密码
6。保护对身份验证信息存储的访问
7。不除久认证cookies
8。在认证cookies上设置HttpOnly
9。使用独特的cookie名字和路径
对每一个决定,又详细列出
1。是怎么实现的
2。这么做的原因
3。好处
4。缺点
5。相关资源
涉及的方面很多,内容非常全,是一个学习设计/实现安全Web应用的好范例

Asp.Net安全验证小结

1,基于windows的安全验证
web.config文件:
configuration
system.web
authentication mode="Windows" /
identity impersonate="true" /
authorization
allow roles="BUILTIN\groupname" users="computername\UserName,computername\UserName" /
deny users="*" /
/authorization
/system.web
/configuration
在.aspx文件中无需任何代码就可以实现验证,但可以在.aspx文件获取登陆用户的信息
需导入命名空间:System.Security.Principal
if(User.Identity.IsAuthenticated)//判断用户是否验证,似乎可有可无
{
WindowsIdentity objWinIdentity=WindowsIdentity.GetCurrent();
lblHelloMsg.Text="the name:"+objWinIdentity.Name+"brType:"+ objWinIdentity.AuthenticationType+"IsInRole:"+User.IsInRole("computername\\groupname");
}

2,基于web.config forms验证
web.config文件:
configuration
system.web
authentication mode="Forms"
forms name="MyApp" path="/" loginUrl="login.aspx"
protection="All" timeout="30"
credentials passwordFormat="Clear"
user name="kwk" password="test" /
user name="ljx" password="test" /
/credentials
/forms
/authentication
authorization
allow users="kwk,ljx" /
deny users="?" /
/authorization
/system.web
/configuration
login.aspx文件:需要提供两个文本框用于填写用户和密码(txtUsr,txtPwd),一个单选框判断是否永久保存
还需要一个按钮控件则响应该button的代码如下:
void DoLogin(Object sender, EventArgs e)
{
if(FormsAuthentication.Authenticate(txtUsr.Value,txtPwd.Value))
{
FormsAuthentication.RedirectFromLoginPage(txtUsr.Value,chkPersist.Checked);
}
else
//为代码完整性而设置,可以不写
{
Response.Write("authentication fails");
}
}
然后在别的页面可以获得登陆用户的值:
if(User.Identity.IsAuthenticated)//可以不需要判断
{
Response.Write("your name:"+User.Identity.Name);
Response.Write("验证类型:"+User.Identity.AuthenticationType);//forms,windows等
}
3,基于自定义forms验证
web.config文件(基本上不需要什么设置):
system.web
authentication mode="Forms"
forms name="MyApp" path="/" loginUrl="custom-login.aspx"
protection="All" timeout="30"
/forms
/authentication
authorization
deny users="?" /
/authorization
/system.web
custom-login.aspx文件,基本原理还是跟2中说的一样,如:
if (blnIsAuthenticated) //注意这个blnIsAuthenticated是一个自己定义的变量
//当我们把用户输入的信息和数据库(或xml)的信息比对,存在则把该变量设为true,反之false
//这是跟2不一样的地方
{
FormsAuthentication.RedirectFromLoginPage(txtUsr.Value, chkPersist.Checked);
//txtUsr和chkPersist分别为textbox,checkbox控件
}
else
{
//验证失败提示信息
}
剩下的如在其他页面获得用户信息,如2一样

4,退出登陆
响应退出登陆按钮的代码:
FormsAuthentication.SignOut();
Response.Clear();
Response.Redirect(Request.UrlReferrer.ToString());//重定向到前一个页面

转载于:https://www.cnblogs.com/gnhao/archive/2013/01/10/2854198.html

ASP.NET 2.0 Internet安全之参考实现相关推荐

  1. ASP.NET 2.0应用程序安全强化纵览

    目前,实现Web开发的核心技术之一是ASP.NET 2.0.这种技术能够帮助企业快速开发出功能强大的Web应用程序,深受开发人员喜爱.然而,在开发人员实现业务逻辑的同时,由于各种原因的影响,应用程序的 ...

  2. ASP.NET 2.0 中的新增服务、控件与功能概述(四)

    原文出自http://blog.sina.com.cn/s/blog_48b6cd65010004fc.html 个性化 另一个新增的服务是个性化,它提供了一种现成的解决方案,用于解决存储站点用户的个 ...

  3. [转载] 使用 Web 标准生成 ASP.NET 2.0 Web 站点

    参考链接: 使用super访问Java祖父母的成员 Stephen WaltherSuperExpert.com 适用于: Microsoft ASP.NET 2.0 (Beta 2) Microso ...

  4. .NET2.0和microsoft新知识体系-ASP.NET 2.0新特性

    ASP.NET技术从1.0版本升级到1.1变化不是很大.然而,从ASP.NET 1.x升级到2.0,却不是件轻而易举的事情.ASP.NET 2.0技术增加了大量方便.实用的新特性.图1-1所示列举了A ...

  5. ASP.NET 2.0 本地化功能:本地化 Web 应用程序的新方法

    适用于: Microsoft ASP.NET 2.0 Microsoft Visual Studio .NET Microsoft Visual Studio 2005 本地化 摘要:随着越来越多的公 ...

  6. [翻译]在Asp.net 2.0中操作数据::母板页和站点导航

    在Asp.net 2.0中操作数据::母板页和站点导航 英文原文 |  下载示例代码(C#)  |  翻译进度  |  英文教程目录 导言 通常,用户友好的个性化站点都有着一致的,站点统一的页面布局和 ...

  7. ASP.Net 2.0 发送邮件的代码

    这两天因为要做一个可以收集用户提交信息,然后发送邮件到指定邮箱的网页.在 asp.net 2.0 里面发送邮件可以使用 System.Net.Mail 下面的类.http://www.systemne ...

  8. 在ASP.NET 2.0中使用样式、主题和皮肤

    ASP.NET 2.0的主题和皮肤特性使你能够把样式和布局信息存放到一组独立的文件中,总称为主题(Theme).接下来我们可以把这个主题应用到任何站点,用于改变该站点内的页面和控件的外观和感觉.通过改 ...

  9. 在ASP.NET 2.0中建立站点导航层次

    站点导航提供程序--ASP.NET 2.0中的站点导航提供程序暴露了应用程序中的页面的导航信息,它允许你单独地定义站点的结构,而不用考虑页面的实际物理布局.默认的站点导航提供程序是基于XML的,但是你 ...

  10. ASP.NET 2.0 中的新增安全功能

    发布日期: 8/26/2004 | 更新日期: 8/26/2004 Stephen Walther Microsoft Corporation 适用于: Microsoft ASP.NET 2.0 M ...

最新文章

  1. C语言网络编程:TCP实现多线程实现多客户端
  2. python实现均值滤波_python如何实现均值滤波?
  3. Dataset之Fashion-MNIST:Fashion-MNIST数据集简介、下载、使用方法之详细攻略
  4. 云栖第一天:解密两个100%背后的云原生
  5. vue2实现自定义样式radio单选框
  6. java语言中的数据类型_Java语言中关于数据类型的一些总结
  7. oracle unpivot 空值,sql – 处理UNPIVOT中的NULL值
  8. 新闻发布项目——接口类(BaseDao)
  9. linux c 错误码大全及错误的捕获
  10. css中的段落控制 【 text-indent】
  11. linux中文语音合成,Linux系统下高质量(微软)中、英文语音合成TTS的安装
  12. 软件安全测试方案设计模板-homin
  13. java变量小明扑克牌_Java模拟扑克牌洗牌实现生成52张扑克的方法示例
  14. 安科瑞水电气三表集抄电能管理系统在阿克希龙公司的设计方案
  15. php 提取图片的特征,让机器“看见”:图像数据的特征提取方法
  16. 计算机主机怎么连接显示器,一台主机两个显示器怎么连接 一台主机两个显示器如何设置...
  17. numpy与Image互转
  18. erp接口,打单软件,订单管理软件,旗帜接口,备注接口,旗帜接口,打单接口,发货接口
  19. 东辉创投放心用姓名存钱的利害,存款一切权归吗?
  20. EXCEL密码破解/破解工作表保护密码(详细图文教程)

热门文章

  1. nodejs首个框架开发(先只发个连接,有空再写)
  2. java读取资源文件(Properties)
  3. 一个循环递归遍历问题
  4. 循环控制-链表删除结点
  5. HTML5-坦克大战一画出敌人坦克并让自己的坦克可以发子弹的功能(二)
  6. 互评Alpha版本—SkyHunter
  7. 【割点】【割边】tarjan
  8. java语言打印上三角和下三角,进一步得到九九乘法表
  9. 2.描述性统计的matlab 实现
  10. SysUtils.UpperCase、SysUtils.LowerCase - 大小写转换