就它们在WordPress中的使用而言,没有使用$\\u会话的本机方法。这意味着您完全有责任缓解由此带来的任何安全问题。
其他问题取决于会话数据的保存方式。我注意到的一个问题是,当达到memcache的分配内存时,它会丢弃最近使用最少的对象,以便为新对象腾出空间1. 但是,如果您可以分配适当的内存来支持站点的流量水平,那么这对$\\u会话来说也应该不会有问题。
WordPress有一个用于瞬态的API,其中数据存储在数据库中,除非使用缓存插件(我相信这最终取决于wp_using_ext_object_cache
2). 当存储在数据库中时,最近使用最少的数据的丢失不应该是瞬态的问题。这可能有优点也有缺点(数据库与快速内存),但我只想演示WordPress存储临时数据的本机无状态设计解决方案的一个示例。如果在使用$\\u会话时出现此问题,则必须在WordPress之外的服务器端解决此问题。
根据会话是否保存在硬盘文件、RAM、数据库或其他文件中,存在性能优势/劣势。这些问题更多地涉及到服务器的设置方式,而不是WordPress中$\\u会话的使用,因为WordPress本质上对$\\u会话的使用是盲目的。
WP Engine发布了一个很好的概要,说明了为什么他们不建议使用WordPress的$\\u会话3, 我已经在下面发布了。其中一些更适用于服务器的设置方式,但请查看并确定它们可能会对您的站点产生何种影响,以及您是否认为$\\u会话是一个很好的解决方案。正如我所说,WordPress对$\\u会话的使用视而不见,它不是本机处理的,这使得是否应该在PHP代码中使用它这一更广泛的争论成为可能。
PHP会话
我们目前根本不建议使用$\\u会话变量。原因有很多:
虽然WordPress本身支持使用$\\u会话,但WordPress是无状态的,不在本机使用$\\u会话。使用WordPress的正确方法是使用Cookie。
使用$会话时存在许多安全问题:
会话中毒攻击者首先访问受害者的页面,例如登录。然后,攻击者将一个PHP脚本上载到他的帐户,并让它显示$\\u会话的上下文(由受害者脚本设置)攻击者确定需要更改哪个变量,上载设置该变量的脚本,然后执行该脚本攻击者访问受害者页面,查看预期的攻击是否有效此攻击只要求受害者和攻击者共享同一个PHP服务器该攻击不依赖于具有相同虚拟主机名的受害者和攻击者,因为攻击者将会话标识符cookie从一个cookie域移动到另一个cookie域很容易会话固定(在共享服务器上)有关更多信息,请参阅以下两个链接: