数据库或会话?存储令牌的位置

时间:2014-05-28 13:33:37

标签: php token

令牌是防止 csrf 攻击的好工具

对于用户发出的每个请求,您的系统必须生成一个唯一的令牌并将其存储在某个地方

下次客户端要求执行某些操作时,系统会验证令牌是否存在,以及它是否仍然有效

如果我们在会话中存储令牌,那么会话将变得太大,这将花费大量内存,因为CPU在响应请求时加载ram中的整个会话,并且例如CPU为1Gb,并且1000个用户拥有1个1Mb会话,CPU不会处理任何事情,这可能是典型的ddos攻击(要求越来越多的令牌知道它们存储在会话中)

在数据库中存储令牌的另一面有其自身的弱点,

您使用哪种方法存储令牌?

1 个答案:

答案 0 :(得分:2)

使用会话,每个会话1MB是相当高的IMO。由于PHP的会话处理程序可以切换为使用不同的后端,因此您可以灵活地将它们存储在磁盘/ memcached / mysql中。