当前位置:  开发笔记 > 编程语言 > 正文

这个ASP.Net身份验证模型的安全性如何?

如何解决《这个ASP.Net身份验证模型的安全性如何?》经验,为你挑选了2个好方法。

我已经使用c#和asp.net创建了一个Web身份验证应用程序,并希望避开您认为它的安全性.所有导航均由https完成.

用户注册

    用户输入3个数据点(SSN,Lname和DOB).如果在我们的系统中找到该组合,则会设置会话变量并导航到下一页.

    如果设置了#1的会话变量,请继续并询问用户名,密码,安全问答等.使用Linq保存数据并在实际保存事件之前验证会话变量.使用salt和sha对PWD和安全性答案进行哈希处理.(使用验证控件和文本框限制来限制输入)

重设密码

    与注册中的#1相同,但包括用户名.如果确定,请设置第1步会话变量.

    如果设置了第1步会话变量,请提出最多3倍的安全问题.Salt/hash并验证数据库salt/hash.如果匹配,则设置步骤2会话变量.(使用验证控件和文本框限制来限制输入)

    检查第2步会话变量.请求新的密码.哈希/盐并使用LINQ保存.

登录(使用验证控件和文本框限制来限制输入)

    收集用户名和密码.与用户名匹配的HASH/salt密码,查看密码是否与hash匹配.如果没问题,请设置用户对象并传递到默认页面.

    所有页面都从masterpage继承.Masterpage具有验证用户对象是否设置为有效实例的代码.如果没有有效的用户对象,则调用注销,重定向到主登录页面.

有点罗嗦,但想要清楚.

我在这里错过了什么吗?我想使用MS的表单auth,但决定自己滚动,因为我有一些问题,我想用FBA完成一些自定义的东西.通过使用会话变量作为步骤完成标记,这是否足以防止会话窃取或书签?有一个更好的方法吗?

请问好吗?



1> Kev..:

ASP.NET Forms身份验证或使用Membership Provider位的哪些方面不符合您的需求?我发现在很多不同的场景中都非常灵活?

滚动你自己通常会在未来使生活变得艰难,特别是当你需要开始做出改变时.您还可以使用母版页来验证用户登录状态等,但是当您需要更多母版页时,您需要在每个母版页中复制相同的代码块并使其保持一致.然后,这可能成为未来某个地方的维护噩梦.

如果您没有在框架中使用现成的烘焙认证工具,那么您应该在其他地方管理这种事情,例如在HttpModule中.

我想你应该重温你正在做的事情.IIdentity如果需要从用户对象挂起用户特定的数据/对象,请查看实现自己的自定义对象.然后分配给IPrincipal您可以附加到Context.UserASP.NET中的自定义.

@ asp316和@Jack(评论)我建议抓住这两本书:

由Dominick Baier 开发更安全的Microsoft®ASP.NET2.0应用程序

Stefan Schackow的专业ASP.NET 2.0安全性,成员资格和角色管理

您会惊讶于.NET内置的安全基础架构的灵活性.除了向web.config 添加设置和在页面上打一个控件之外,还有很多其他功能.



2> Joel Coehoor..:

关于"滚动你自己"的事情是,它很容易以微妙的方式弄错,以至于看起来有效.然后,当然,您可以部署此代码并继续处理其他事情,而不知道出现任何问题.毕竟,它通过了所有测试.

一年之后,事实证明你的网站在六个月前遭到黑客攻击,直到那时你才知道它.

更好地找到依赖安全专家编写的实现的方法.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有