ASP.NET用户登录最佳实践

9 asp.net asp.net-mvc

我想使用ASP.NET(MVC)创建一个登录系统.

在互联网上,我发现了一些在Click事件中涉及SQL的坏例子.其他信息指向ASP.NET内置成员资格提供程序.

但是,我想自己动手.我不想使用内置的成员资格提供程序,因为它似乎只适用于MS SQL,我不喜欢在我的数据库中有一些外来表的想法.

我可能会想到一些东西,但我需要在正确的方向上指点几点.它不一定是高安全性,而只是常规的常识安全性.

我有一些直接的问题:

  1. 很多系统似乎都将会话ID存储在用户表中.我想这是为了防止劫持,将会话绑定到用户.每次用户进入页面时都要检查一下吗?如果会话到期我该怎么办?

  2. 哈希,腌制,它做什么?我知道MD5哈希,我以前用过它.但不是腌制.

  3. Cookie的最佳做法?

mat*_*ant 5

我不知道最佳做法,但我可以告诉你我做了什么.它不是高科技安全,但它确实起到了作用.

我使用表单身份验证.我通过登录页面上的文本框收到使用ssl保护的密码.我拿了那个密码并哈希吧.(散列就像单向加密,你可以得到无法反转回密码的哈希码).我将该哈希值与数据库中的用户哈希值进行比较.如果哈希的匹配我使用在身份验证处理中构建的asp.nets,它为我处理cookie.

FormsAuthentication类具有可用于执行此操作的方法,例如SetAuthCookie和RedirectFromLogin.他们将设置cookie并将其标记为已通过身份验证.asp.net使用的cookie是加密的.我不能说它的安全级别,但它在相当普遍的用途.

在我的课上,我进行密码检查并使用formauth来处理其余的事情:

if(SecurityHelper.LoginUser(txtUsername.Text, txtPassword.Text))
{    
    FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);
}
Run Code Online (Sandbox Code Playgroud)