回答
密码必须在数据库中使用单向散列算法进行散列处理。这使您不必知道他们的密码。选择正确的算法很重要。由于多个漏洞,MD5被认为是不安全的。 SHA1还没有被证明是不安全的,因为MD5具有这种不安全性,但它被认为在理论上很弱。最好转换为SHA2或SHA256。 SHA2由政府要求2010年
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并完成它。
你必须权衡可用性与隐私。使用电子邮件地址而不是用户名是非常好的,因为它很容易记住,但如果你有社交网站,人们不会喜欢你发布他们的电子邮件地址。有时候很高兴接受用户名或电子邮件地址。
您需要考虑的另一件事是您的用户将如何保持登录到您的系统。会话,cookies等。会话很简单,但如果您的网站拥有数百万用户,则会变得非常昂贵。您可以使用memcache或Java中的众多分布式缓存中的一个来存储它们。但是,其他替代方案正在使用HMAC。请记住,与单向哈希不同,HMAC具有必须在服务器上受保护的私钥。如果您选择使用HMAC + cookie来识别用户,请采取措施以某种形式的对称加密来保护私钥。在HMAC不能使用过去的情况下也有一个死亡日期。 HMAC只应该在固定的时间段内有效。您的软件必须执行该操作。不要依靠cookie超时为你做这件事。
要考虑的其他事情是使用OpenID,因为它确实可以帮助用户访问您的网站,而无需通过注册过程。我有一个Android应用程序,我没有先要求提供帐户,但如果他们选择使用某些功能,我会要求他们注册。而且,通过不强制他们登录,用户的留存率更高。人员在注册过程中下降。
确保您的应用程序中的方法在执行之前强制某人进行身份验证。在调用方法之前,您需要有一种方法来强制所有方法调用通过应用程序的一部分,并且如果它们未通过身份验证,则将它们重定向到登录。尝试并记住他们所去的页面。
还有其他的,但我不完全确定这是你在找什么。祝你好运,并且在安全方面与谷歌做一点研究是值得的。
谢谢;我正在建立一个检查清单,以便我可以验证我的新系统并检查一些旧系统。 – MathGladiator 2010-11-05 03:11:40
常见的边缘情况:
- 人们忘记了密码。
- 人们关闭Javascript,Flash,cookies ...任何技术,你可以想到依靠。
- 安全性很难,你所要做的就是搞砸一次,毁掉你的月。 我的推荐:让别人去做。如果你可以避免重新发明那个轮子,那就这样做。
- 1. keyboardWillShowNotification边缘情况
- 2. 的.htaccess边缘情况
- 3. toTitleCase JavaScript的边缘情况
- 4. accepted_nested_attributes和验证的边缘情况
- 5. 找不到边缘情况在Hackerrank
- 6. 欢乐:自定义ACK边缘情况
- 7. CS信息系统图像边缘
- 8. MySQL - GROUP BY的边缘情况下使用
- 9. Solr系统空间使用情况
- 10. 开放的系统,默认情况下
- 11. 寻求#50使用是一个双赢边缘情况
- 12. 如何在Swift中用边缘情况返回单个值?
- 13. IndexedDB的交易自动提交的边缘情况的行为
- 14. PIL在不影响边缘的情况下替换颜色
- 15. 2D物理边缘情况下的2D运动
- 16. 带边缘情况下的整数匝数算法
- 17. JS:边缘情况下的问题 - 在阵列
- 18. ASP.NET MVC 3 - 区域路由的边缘情况
- 19. 检测物体接触屏幕边缘的情况
- 20. 这是PowerShell类型解析机制中的边缘情况吗?
- 21. 与SQL Server日期时间的边缘情况处理
- 22. 边缘检查坐标系
- 23. 具有边缘排水沟的Flexbox网格系统
- 24. 崇高的文本3微软边缘构建系统
- 25. 矩形网格 - 我需要对边缘情况
- 26. 重载增量运算,循环和边缘情况
- 27. 切比雪夫质心,显然在边缘情况下失败
- 28. C-指针递增边缘情况和评价顺序
- 29. 天青 - 需要futher解释关于边缘情况
- 30. Linux系统中每个普通用户的磁盘使用情况Fedora
什么是您的操作参数(因此边缘情况?)这个问题非常模糊。你能提供一些关于你正在开发的系统的更多信息吗?例如。你为什么从头开始开发? – davmac 2010-11-05 02:08:59