首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户系统的边缘案例

用户系统的边缘案例
EN

Stack Overflow用户
提问于 2010-11-05 09:52:35
回答 2查看 161关注 0票数 1

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-05 10:35:24

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

http://en.wikipedia.org/wiki/MD5

密码应该加盐。这可以防止字典攻击您的密码。通过组合一个随机的信息片段,意味着攻击者无法获取一堆单词,并逐个尝试它们,以查看您的系统中哪些散列匹配。

http://en.wikipedia.org/wiki/Salt_(cryptography

密钥强化有助于对抗弱密码,因为弱密码会损害系统的安全性。您可以使用散列算法迭代1000次,以提高暴力破解密码的复杂性。

http://en.wikipedia.org/wiki/Key_strengthening

确保您的用户通过https为web应用程序提交其登录信息。否则,他们将以明文形式提交密码。不要试图用Javascript变得聪明。只需使用https即可完成。

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

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

其他要考虑的事情是使用OpenID,因为它真的可以帮助你的用户访问你的网站,而不必经历注册过程。我有一个android应用程序,我不要求他们预先注册帐户,但如果他们选择使用某些功能,我会要求他们注册。而且,通过不强制用户登录,用户的留存率要高得多。人们在注册过程中放弃。

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

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

票数 7
EN

Stack Overflow用户

发布于 2010-11-05 10:53:40

常见的边缘情况:

人们忘记了passwords.

  • People关闭Javascript,,
  • ...你能想到的任何可以依赖的技术。
  • 安全是很难的,你所要做的就是搞砸一次,毁掉你的一个月。我的建议是:让别人来做吧。如果你可以避免重复发明轮子,那就这么做吧。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4103003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档