最近在看一本关于Web安全的书《白帽子讲Web安全》,书龄比较老,但是还是挺有科普意义。
认证 (Authentication)
Authentication 和 Authorization 是不一样的意思
认证(Authentication)解决的是用户是谁,Authorization 解决的是这个用户能做什么。
认证离不开用户和密码,密码一般是以组合方式加salt做不可逆的加密存进数据库,常见的算法有MD5和SHA系列。
认证成功后需要维护用户登录态,一般将SessionID加密后存在cookie中,因为cookieshoul受浏览器同源策略的保护。
之前对Cookie test33加密的疑惑得到解决,服务端将信息直接加密写到cookie中。
授权 (Authorization)
垂直权限上遵循最小权限原则、默认拒绝。
容易出问题的是在水平权限上。在基于角色管理的访问控制(RBAC)上容易发送,比如同一角色组下用户A访问到了同一组用户B的资源。
现在一般使用Oauth验证机制