将会话数据存储在数据库中是一种常见方法,并得到主要php框架的广泛支持(有关参考资料,请参阅symfony2中的PdoSessionHandler和laravel中的DatabaseSessionHandler)。
此类会话处理程序的基本原则是将会话数据保存在数据库表中,而会话ID保存在一列中,数据保存在另一列中。在读取会话数据时,处理程序将运行数据库查询,读取具有给定会话ID的表行,该会话ID由用户cookie提供。
根据另一个stackoverflow问题,比较数据库查询can be vulnerable to timing attacks中的字符串。
那么,是否可以结合时间攻击和session hijacking来窃取其他用户使用的会话ID ?如果是这样,那么为什么主要框架没有考虑它?
答案 0 :(得分:0)
如果针对数据库层的定时攻击是实用,那就更难了,也更值得怀疑,但是是的 - 这是可能的。
但是,这并不意味着(在PHP中的默认设置)文件存储或缓存存储(如Redis)是安全的。很自然,所有类型的存储(不限于会话)都会尽可能地加快速度,这正是时间攻击所利用的。
设置短暂的到期时间 - 无论如何应该 - 并且不要担心。定时攻击需要时间,而会话应该是短暂的。