安全总结

名词解释

拖库

攻击者利用网站的漏洞,获取网站的所有数据。

撞库

攻击者从A网站获取了用户的用户名和密码,然后尝试在B网站登录。
也就是碰运气。

暴力破解

也就是穷举法,一一尝试破解密码

彩虹表

对于不可逆推的hash加密,像md5()。md5(a)=b,从b不可以反推出a来。
由于a与b的关系是一一对应的,那么,a与b可以建立关系表,从而由b可以反推出a。
这个表,就是“彩虹表”。

对称加密

加密与解密使用的秘钥相同。

非对称加密

加密与解密使用的秘钥不同。
比如像ssh,私钥加密的密码可以用公钥解密,公钥加密的密码可以用私钥解密。

无效的加密

使用明文存储密码,是一个非常不明智的选择。在网站被拖库时,攻击者很容易就获取了用户的密码。

那么,使用像md5()这样的单项散列函数,最终生成的密码是不是安全的呢?能不能保证在网站被拖库的时候不泄露密码呢?
答案是“NO”。使用上面的所说的彩虹表,很容易就破解用户的密码。

有效的加密-“带盐”

使用hash加密,也很容易被破解,那么,我们加点盐呢?

md5("123456","weqd112sqadq")

这样,用户输入的密码,和我们的“盐”一混合,就生成了最终的密码。

但是,如果这个盐是固定不变的,就是weqd112sqadq,攻击者很容易获取这个salt,攻击者获取了这个salt之后,那破解又容易了。

如何解决呢?—就是让攻击者获取不到这个salt。

在每次生成密码时,我们使用一个随机的salt,这样攻击者就无法获取salt了,这个随机的salt要足够长,那么攻击者就无法破解了。

将这个salt保存在其他足够安全的服务器或数据库中。

PHP中安全的加密开源库

phpass
这个库很强大,可以生成很强大的加密密码,有时间好好研究一下。

你可能感兴趣的:(杂项)