退出日志设计
退出日志与登录日志是相互对应的,如果是主动退出,则本身不具有安全性问题,退出系统本质上是对账号的一种保护行为,因此不需要考虑安全设计问题,也不需要给用户发送消息提醒。
用户的退出行为,很多时候并不需要完整的记录,用户可能直接关闭了浏览器,或者由于Session到期导致被动退出,这种情况下往往是不记录日志的。甚至有些系统设计是不保存用户退出日志的,如用户保持了登录状态,只要客户端还留存有相应的Cookie或登录令牌,则始终保持登录状态。
如果用户主动退出,则可以利用退出日志统计出用户的系统使用时长和作息时间,以及分析用户对系统的依赖程度等。
在退出日志存储时一定要注意,不要与登录日志存储在一起。很多人这样设计存储结构:日志ID、登录人、登录时间、登录地点、登录方式、登录设备、退出时间、退出地点、退出方式、使用时长。这样看似只用一条数据就完整记录了用户从登录到退出的全流程,实际上登录次数一定比退出多,而不是一一对应的。另外,需要不断地去更新登录日志,而登录日志的数量级较大,查找的性能并不高。
还有一种情况是被动退出。例如,用户正在使用系统,而这个账号又被其他人登录了,这时往往要踢出当前用户,并通知当前用户“您已经被迫下线”,同时进行短信通知提醒,让用户核实是否安全。这种情况下的退出日志是必须要记录的,这往往具有一定的安全风险。
退出日志记录表的结构如表6-3所示。
表6-3 退出日志记录表的结构