Session 正确的登录过程
我以前没有处理过登录过程,所以这对我来说是一个新领域,我在谷歌上找到的似乎都是处理这个过程的相互冲突的方法,所以我希望有人能帮助澄清 到目前为止,我有一个saltedsha1散列,由用户名、密码和salt变量混合而成。 当用户登录他们的凭证时,这个散列会被发送到sql,如果找到,就会返回一个用户ID(或其他)。所以我知道他们是经过认证的。 有了它,我可以用会话变量处理他们的会话 到目前为止是这样吗 无论如何,我想有“记住我”的选项,并且正在考虑将一些东西存储在cookie中,但不确定要放什么,因为据我所知,存储散列与将用户名和密码放在纯文本中几乎是一样的 我很困惑,有人能解释一下吗Session 正确的登录过程,session,cookies,login,sha1,Session,Cookies,Login,Sha1,我以前没有处理过登录过程,所以这对我来说是一个新领域,我在谷歌上找到的似乎都是处理这个过程的相互冲突的方法,所以我希望有人能帮助澄清 到目前为止,我有一个saltedsha1散列,由用户名、密码和salt变量混合而成。 当用户登录他们的凭证时,这个散列会被发送到sql,如果找到,就会返回一个用户ID(或其他)。所以我知道他们是经过认证的。 有了它,我可以用会话变量处理他们的会话 到目前为止是这样吗 无论如何,我想有“记住我”的选项,并且正在考虑将一些东西存储在cookie中,但不确定要放什么,因
提前感谢通常,使用平台提供的身份验证方法比自己创建身份验证方法更好。有很多不明显的问题,你可以很容易地让自己去面对。你在使用哪个平台?您正在使用web框架吗 像SHA1这样的通用散列不适合用于密码散列,因为当您需要非常慢的东西时,它们被优化为非常快。有关这方面的讨论,请参阅 无论如何,我想有“记住我”的选项,并且正在考虑将一些东西存储在cookie中,但不确定要放什么,因为据我所知,存储散列与将用户名和密码放在纯文本中几乎是一样的
散列函数被设计成单向函数,所以不,它不同于将用户名和密码放在纯文本中。但是,如果您这样做,您必须创建一种方法,让某人使用散列而不是用户名和密码进行身份验证,这与将用户名和密码存储在客户端是一样的(无论如何,就您而言).使用平台提供的身份验证方法通常比自己创建身份验证方法更好。有很多不明显的问题,你可以很容易地让自己去面对。你在使用哪个平台?您正在使用web框架吗 像SHA1这样的通用散列不适合用于密码散列,因为当您需要非常慢的东西时,它们被优化为非常快。有关这方面的讨论,请参阅 无论如何,我想有“记住我”的选项,并且正在考虑将一些东西存储在cookie中,但不确定要放什么,因为据我所知,存储散列与将用户名和密码放在纯文本中几乎是一样的
散列函数被设计成单向函数,所以不,它不同于将用户名和密码放在纯文本中。但是,如果您这样做,您必须创建一种方法,让某人使用散列而不是用户名和密码进行身份验证,这与将用户名和密码存储在客户端是一样的(无论如何,就您而言).我喜欢您使用salt进行哈希运算,但我认为没有必要使用用户名进行哈希运算,只有密码+salt就足够了。特别是,如果您希望为您的系统选择可更改的用户名,那么它将造成重新设置的开销 对于“记住我”选项,我认为您不应该在客户端cookie中存储任何凭据。只有会话ID应该足够了。如果要使其真正安全,应该使用服务器颁发的客户端证书
我喜欢您使用salt进行哈希运算,但我认为没有必要使用用户名进行哈希运算,只有密码+salt就足够了。特别是,如果您希望为您的系统选择可更改的用户名,那么它将造成重新设置的开销 对于“记住我”选项,我认为您不应该在客户端cookie中存储任何凭据。只有会话ID应该足够了。如果要使其真正安全,应该使用服务器颁发的客户端证书
您的身份验证很好。如果你想让它更安全,你可以通过SSL加密连接来传输登录信息,这样就没有人可以读取网络上发生的事情 记住标记非常简单,假设您想要一个有效期为14天的记住我的函数 没有经过身份验证会话的陌生人来到您的站点:
就这样 您的身份验证很好。如果你想让它更安全,你可以通过SSL加密连接来传输登录信息,这样就没有人可以读取网络上发生的事情 记住标记非常简单,假设您想要一个有效期为14天的记住我的函数 没有身份的陌生人
userid ; user agent ; first two ip segments ; current timestamp ; your application secret token
auth=userid;timestamp;hash-of-the-above