我从来没有想过要这么做,也不知道有什么风险。它是每一页的一次会话,代之以访问的下一页。
做以下事情的安全风险有多大?如果有的话?
$_SESSION['somename'] = "SELECT `something` FROM `table` WHERE `something`='blah'";这是一种安全的方法吗,如果不是,有什么更安全的方法来存储将被替换的一次性查询呢?
在临时mysql表中存储查询可能更安全。但我想避免额外的mysql调用。
发布于 2014-10-16 22:08:47
使用PHP设置变量不是一种安全的方法,因为它可能公开可能通过SQL注入删除的表名。现在,会话变量存储在服务器上,浏览器无法访问。然而,为什么引入一个坏习惯可能会导致开发团队中一些不太聪明的人使用它来设置cookie呢?然后你有一个很大的问题,开始是良性的。最好将数据放在PHP会话变量中,这些变量充当用户标识符。
发布于 2014-10-16 22:08:37
这不应该是太有害(见下文),但这是不好的做法。
DB查询是数据/模型层,会话管理是一个完全不同的主题。在把它们分开中,你会帮自己一个大忙。
此外,如果需要缓存某些内容,则应该缓存结果,而不是查询。但是,您可以通过向结果添加标识符来确保结果与用户相关联。
例如,可以将DB查询结果存储在Memcached中的数组中,其中的数组键将是用户ID。
如果您担心MySQL调用的性能,您应该研究规范化和适当的索引。
关于潜在危害的注意事项:会话数据存储在文件系统中,或者(很少)存储在内存中。在共享主机系统上,可能有也可能没有实现阻止其他用户读取您的会话数据的措施。另一方面,PHP源代码也具有明文可读性,并且通常具有相同的权限,因此没有额外的攻击向量。如果其他人可以写入您的会话数据,则会带来真正的安全威胁。但我希望在大型托管公司的机器上没有这样的设备。
https://stackoverflow.com/questions/26414621
复制相似问题