Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用户系统的边缘情况_Javascript_Security_Node.js - Fatal编程技术网

Javascript 用户系统的边缘情况

Javascript 用户系统的边缘情况,javascript,security,node.js,Javascript,Security,Node.js,因此,我正在为node.js web框架编写一个用户/身份验证系统 从可用性或安全性的角度来看,我应该关注哪些边缘情况?必须使用单向散列算法在数据库中散列密码。这使你不必知道他们的密码。选择正确的算法很重要。由于存在多个漏洞,MD5被认为是不安全的。SHA1并没有像MD5那样被证明是不安全的,但在理论上它被认为是脆弱的。最好过渡到SHA2或SH256。政府要求在2010年底前完成SHA2 密码应该加盐。这可以防止对密码的字典攻击。通过组合一段随机信息,攻击者无法获取一堆单词并逐个尝试,以查看系

因此,我正在为node.js web框架编写一个用户/身份验证系统


从可用性或安全性的角度来看,我应该关注哪些边缘情况?

必须使用单向散列算法在数据库中散列密码。这使你不必知道他们的密码。选择正确的算法很重要。由于存在多个漏洞,MD5被认为是不安全的。SHA1并没有像MD5那样被证明是不安全的,但在理论上它被认为是脆弱的。最好过渡到SHA2或SH256。政府要求在2010年底前完成SHA2

密码应该加盐。这可以防止对密码的字典攻击。通过组合一段随机信息,攻击者无法获取一堆单词并逐个尝试,以查看系统中的哈希匹配

)

密钥增强有助于对抗弱密码,因为弱密码会损害系统的安全性。您可以使用哈希算法迭代1000次,以提高强制密码的复杂性

确保您的用户通过https为web应用程序提交登录。否则,他们将以明文形式提交密码。不要尝试使用Javascript来变得聪明。只要使用https,就可以了

你必须权衡可用性和隐私。使用电子邮件地址而不是用户名真的很好,因为它很容易记住,但是如果你有一个社交网站,人们不会喜欢你发布他们的电子邮件地址。有时候,接受用户名或电子邮件地址很好

你需要考虑的另一件事是你的用户将如何登录到你的系统中。会话、cookie等。会话很简单,但如果您的站点有数百万用户,它们可能会变得昂贵。您可以使用memcache或Java中过多的分布式缓存之一来存储它们。然而,其他替代方案正在使用HMAC。记住,与单向散列不同,HMAC有一个私钥,必须在您的服务器上进行保护。如果您选择使用HMAC+Cookie来标识用户,请采取步骤使用某种形式的对称加密来保护私钥。还有一个终止日期,HMAC不能在过去使用。HMAC只能在固定的时间内使用。你的软件必须执行这一点。不要依赖cookie超时来为您完成此操作

其他需要考虑的事情是使用OpenID,因为它确实帮助用户访问您的站点而不必通过注册过程。我有一个android应用程序,我不需要预先申请帐户,但如果他们选择使用某些功能,我会要求他们注册。而且,通过不强制用户登录,用户的保留率要高得多。人们在注册过程中会掉队

确保应用程序中的方法强制某人在执行之前进行身份验证。在调用方法之前,您需要有一种方法来强制所有方法调用通过应用程序的一部分,如果它们没有经过身份验证,则将它们重定向到登录。试着记住他们要去的那一页


还有其他的,但我不完全确定这就是你要找的。祝你好运,和谷歌一起做一些关于安全性的研究是值得的。

密码必须使用单向散列算法在数据库中散列。这使你不必知道他们的密码。选择正确的算法很重要。由于存在多个漏洞,MD5被认为是不安全的。SHA1并没有像MD5那样被证明是不安全的,但在理论上它被认为是脆弱的。最好过渡到SHA2或SH256。政府要求在2010年底前完成SHA2

密码应该加盐。这可以防止对密码的字典攻击。通过组合一段随机信息,攻击者无法获取一堆单词并逐个尝试,以查看系统中的哈希匹配

)

密钥增强有助于对抗弱密码,因为弱密码会损害系统的安全性。您可以使用哈希算法迭代1000次,以提高强制密码的复杂性

确保您的用户通过https为web应用程序提交登录。否则,他们将以明文形式提交密码。不要尝试使用Javascript来变得聪明。只要使用https,就可以了

你必须权衡可用性和隐私。使用电子邮件地址而不是用户名真的很好,因为它很容易记住,但是如果你有一个社交网站,人们不会喜欢你发布他们的电子邮件地址。有时候,接受用户名或电子邮件地址很好

你需要考虑的另一件事是你的用户将如何登录到你的系统中。会话、cookie等。会话很简单,但如果您的站点有数百万用户,它们可能会变得昂贵。您可以使用memcache或Java中过多的分布式缓存之一来存储它们。然而,其他替代方案正在使用HMAC。记住,与单向散列不同,HMAC有一个私钥,必须在您的服务器上进行保护。如果您选择使用HMAC+Cookie来标识用户,请采取步骤使用某种形式的对称加密来保护私钥。还有一个终止日期,HMAC不能在过去使用。HMAC只能在固定的时间内使用。你的软件必须执行这一点。不要依赖cookie超时来为您完成此操作

其他需要考虑的事情是使用OpenID,因为它确实帮助用户访问您的站点而不必通过注册过程。我有一个android应用程序,我不需要预先申请帐户,但如果他们选择使用某些功能,我会要求他们注册。而且,通过不强制用户登录,用户的保留率要高得多。人们在注册过程中会掉队

确保应用程序中的方法强制某人在执行之前进行身份验证。