Foundations of Security: What Every Programmer Needs to Know 读书笔记(六)
先跳到密码这一章,看看密码管理都需要注意哪些问题。密码是安全防护的第一道防线,是认证和访问控制的
重要手段。以电子商务为例,最终要的安全手段就是安全连接SSL和密码保护。用户名和密码可以验证用户
身份,安全合理的应用流程是电子商务的第一步。
密码如何存储?明文肯定是不能用了,所以有了密文存储(使用单向HASH),同时结合了SALT。在看SALT
这一段时没明白SALT有什么用,后来又在WIKI上查了一下,原来SALT可以预防预先生成密码本(也就是把
一些常见的密码用同样的HASH生成密码本,用的时候直接可以用密文去比较,当然前提是得到密码文件,用
了SALT以后,很难提前生成密码本,SALT相当于把密码加长了)。
为了保护密码,或者使用更安全的密码,有很多”best practice“,看看你见过几种?
1)strong passwords:这个不用说,基本上都有这个要求,在注册时还会提示你所使用密码的强度。密码
使用字符越宽,效果就越好。所以对哪些只能使用字母和数字做密码的网站,我基本持怀疑态度。但是字符集
放宽之后,被注入的风险会增加,也有不好的一面。
2)Limiting login:多次登录失败后,锁定密码。这里举的一个反例时使用错误密码做DoS攻击。想想还是
很有效,一个攻击,把正常用户的密码给锁定了,那网站的服务电话估计会被打爆。但是对于银行ATM机就
不怕这个问题,因为ATM还有卡片认证(something you have),这个要比用户名(something you know)
要健壮的多。所以互联网上一般不锁定帐号,只是会把帐号停用一段时间,而且不用人工解锁。
3) Honeypot用一些简单的用户名,密码来抓非法入侵。比如用guest/test等帐号。这个有点小儿科了,有用
吗?
4) Artifical delays:每次认证有时间间隔。这个用不好,可能会影响用户体验。
5) Filtering:强制用户使用健壮的密码,好像和1有重复。
6)Last login:上次登录的时间。这个用的很多,但是我一般都没注意看,呵呵
7) Aging:定期更换密码。建议淘宝也用一下这个策略,比较有效。我公司就是这样搞的。
8)Image authentication:图片认证。这个是放钓鱼的。用户注册时同时上传一个图片,并在登录时检查
一下这个图片。这个不错,先给用户名,然后出图片,然后输密码。不过用起来有点麻烦。
9)Pronounceable:声音密码,没搞清楚是怎么回事。
10) One time password:一次性密码,这个很常见。很多地方都会用到token,流行做法。
密码是用作身份认证的,除了密码外,还有其他认证方式。用的场合不太一样。
修改密码也是个大问题,如何安全地修改密码?有很多密码保护问题。其实用多个只有自己知道的密码问题,
来做身份认证,效果要比密码好很多。至少减少了可攻击的范围。用密码短语,而不只是密码。或者是密码
问题。在网络应用中可以尝试一下。
- droplet's blog
- Add new comment
- 1010 reads

