Foundations of Security: What Every Programmer Needs to Know 读书笔记(六)

droplet's picture

9 - Password Security

先跳到密码这一章,看看密码管理都需要注意哪些问题。密码是安全防护的第一道防线,是认证和访问控制的

重要手段。以电子商务为例,最终要的安全手段就是安全连接SSL和密码保护。用户名和密码可以验证用户

身份,安全合理的应用流程是电子商务的第一步。

密码如何存储?明文肯定是不能用了,所以有了密文存储(使用单向HASH),同时结合了SALT。在看SALT

这一段时没明白SALT有什么用,后来又在WIKI上查了一下,原来SALT可以预防预先生成密码本(也就是把

一些常见的密码用同样的HASH生成密码本,用的时候直接可以用密文去比较,当然前提是得到密码文件,用

了SALT以后,很难提前生成密码本,SALT相当于把密码加长了)。

9.1 - Password Security

为了保护密码,或者使用更安全的密码,有很多”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,流行做法。

密码是用作身份认证的,除了密码外,还有其他认证方式。用的场合不太一样。

修改密码也是个大问题,如何安全地修改密码?有很多密码保护问题。其实用多个只有自己知道的密码问题,

来做身份认证,效果要比密码好很多。至少减少了可攻击的范围。用密码短语,而不只是密码。或者是密码

问题。在网络应用中可以尝试一下。

0
Your rating: None