0

我有一个登录系统,用户可以在其中检查“记住我”选项。当用户选中该选项时,我将 session_id 存储到 cookie 中,并将他的 session_id、ip、浏览器信息等写入数据库会话表。因此,当用户回来时,我根据存储在会话表中的 session_id/ip/browser/etc 确保 cookie 没有被伪造。

现在看来,这可能是很多开销和数据库写入。有没有更好、更安全的方法来做到这一点而无需太多开销?

4

1 回答 1

1

这是一个权衡:当数据没有存储在数据库中时,它最终会访问 PHP 存储会话数据的服务器的本地文件系统。换一种说法:什么是慢?一个随机访问数据库命中还是一个随机访问磁盘命中?

我发现将会话存储到数据库是一种更优雅的解决方案,因为它比基于文件系统内容的猜测更容易跟踪用户及其会话。它还允许您在任何时候手动注销用户或模拟登录会话(一次密码重置)。

如果您使用 MySQL,请将您正在使用的“会话”表的引擎设置为 MEMORY,您将始终拥有极快的查找速度,而不会影响用户体验。

于 2012-05-23T05:28:16.523 回答