认证的目的是为了认出用户是谁,而授权的目的是为了决定用户能够做什么。
认证实际上就是一个验证凭证的过程。
认证感觉就是一套房子,你拥有的房子的钥匙,而认证就是开锁的过程。
而授权就是你进入房子后所可以做的事情。
暴力破解是指对一个账户的密码进行尝试,然后最终获得正确的密码
而弱口令破解则是指收集一堆用户,然后使用弱口令来尝试密码,得到一个弱口令的用户
密码必须以不可逆的加密算法,或者是单向散列函数算法,加密后存储在数据库中。(一般是通过MD5或者sha-1来加密)
黑客为了破解md5,广泛采用彩虹表的方法。
彩虹表就是尽可能多的收集密码明文和明文对应的MD5值,这样通过查询MD5的值就可以找到MD5值对应的明文。
为了避免密码哈希值泄露,在计算密码明文的哈希值时,增加一个“salt”。salt是一个字符串,它的作用是为了增加明文的复杂度,并能使得彩虹表一类的攻击失效。
MD5(username+password+salt)
salt是随机的字符串。
session
sessionID加密后保存在cookie中,因为Cookie会随着http请求头发送,且受到浏览器同源策略的保护。
如果sessionID在生命期内被窃取,就等同于账户失窃。
所以cookie是很重要的。
单点登录(SSO)
是指用户只要登陆一次,就可以访问所有系统。