用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
21aspnet的公告
<img src=" http://p.blog.csdn.net/images/p_blog_csdn_net/21aspnet/MVP1.jpg"/>
文章分类
.NET 工具
C# to VB.NET Translator
Fiddler
FxCop代码标准检测工具
httpwatch
ieinspector
IETester
Memcached
Multiple IE
Nbear
Nunit单元测试
pushlets
Tab集合
VB.NET and C# Comparison
VB.NET 代码转为C#
网站国际排名查询工具
.NET 下载/讲座视频
chinaitlab
enfull
Visual Studio 2005 的工具
wrox出版社书刊代码下载
中国台湾微软MSDN
中文MSDN WebCast网络广播全部下载列表
源码之家
.NET 优秀Blog
cathsfz
cnkiminzhuhu
cuike519的专栏
dahuzizyd的专栏
DotNet技术交流乐园
DotNet男孩社区
dudu
gztoby
IT Crazy
Kemin's booootLog
kimyoo(RSS)
Leoo2sk
LoveCherry
MSDN每日追踪
Nios.Org
phphot
Teddy's Knowledge Base
Think Different and Think More
Visual Studio.net专栏
WCF Tools 中国研发团队的专栏
体验ASP.NET 2.0新特性
刘洪峰
天轰穿
孟宪会
宝玉
开心就好【博客堂】
张子阳
彭斌
思归呓语
木子 [I am praying]
李会军
李洪根【VB】
永春阁
汉飞扬【Vista】
涂曙光【SharePoint】
理想&美人(RSS)
维生素C.net
网际浪子
葛涵涛
蒋涛
蝈蝈俊.net[csdn版]
蝈蝈俊.net[joycode版]
谭振林
邹建
阿不
阿良.NET
雨痕
風語·深蓝
鸟食轩(RSS)
黄昕
.NET 优秀网站
.NET 官方网www.asp.net
.NET 藏经阁 - 知识分享
.NET开发资源精华收【不得不看】
ASP .NET FAQ
asp101
aspfree
C#开源资源
C#开源资源大全
C#语言在线帮助网站
codeproject
infragistics
Internet Explorer 开发者资源
iwebsms
MSDN Web/服务
MSDN中文
Scott Guthrie(ASP.NET之父)
SharePoint爱好者
VS2005.com
Wintellect
www.411asp.net
世界上最大的Open Source项目在线网站
中国C#技术学习中心
官方ASP.NET入门教程
微软中文新闻组
微软官方.NET指导站点
最好的索引网站
正则
邮件发送常见问题解决方法
Ajax链接
AJAX载入等待图片在线生成
bindows(RSS)
DHTML menu4作者主页(RSS)
Dhtmlgoodies
Dynamicdrive
EXT类库
json
Tabs
Tabs
Tabs
Yahoo YUI
大量DHTML代码
无忧脚本 - JavaScript
索漫
综合开发技术网
CSDN
IBM中文Web 项目资源中心
W3C技术在中国
中国BS网
中文C#技术站
天新网
天极网开发频道
太平洋电脑网web开发
看雪
统一教学网
编程爱好者
网页设计师:web标准教程及推广,网站重构
老猫理想
蓝色理想
豆豆技术网
赛迪网
存档

原创  ASP.NET 2.0 Internet安全之参考实现 收藏

[来源: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+"<br>Type:"+ 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());//重定向到前一个页面

发表于 @ 2009年02月02日 11:27:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:Asp.Net下通过切换CSS换皮肤 | 新一篇:你知道吗?你可以在异常中解退调用栈

  • 发表评论
  • 评论内容:
  •  
Copyright © 21aspnet
Powered by CSDN Blog