转载自:http://blog.csdn.net/ffm83/article/details/44157081
首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考。
- 1、 前提
执行安全的验证机制,不仅仅要同时满足几个关键安全目标,许多的时候也需要牺牲其他目标。比如易用性、成本、还有功能。
很多的时候,更加的安全可能会适得其反,比如让用户设置超长的密码并且经常强迫用户修改密码,会导致用户直接使用满足条件的、尽可能简单的、有规律的密码。
比如:一个系统要求12位以上的复合密码,导致了常见的密码为:123456789abcd1, 123456789abcd2, 123456789abcd3…
我们需要综合考虑下面这些因素:
系统所提供功能的安全程度;
用户对不同类型的验证控制的容忍和接受程度;
支持一个不够友好的界面需要的整体成本(便捷和安全往往是一个事物的两个方向)
系统所保护的信息或者资产的价值。
- 2、 使用可靠的密码
一些基本要求,写下来,以后也可以参考。
- 最小密码长度,至少长度>=6位,使用字母,数字和特殊字符;
- 必须同时包含大小写字符;
- 避免使用字典中的单词、名称和其他常用密码;
- 避免以用户名为密码;
- 不同的密码强度适应不同类型的用户;
- 其他需求
应该使用唯一的用户名;
系统生成的用户名和密码要有足够的随机性,其中不包含任何顺序,即使攻击者访问大量连续生成的实例也无法对它进行预测;
运行用户设置足够强大的密码,比如运行在密码中使用各种类型的字符。(比如使用中文字符作为密码…)