我想知道在使用PHP在mySQL上进行数据库操作时,在Session数组中保存所有数据库值是非常安全的,如下所示
$query = "select * from `users` where `mails` = ? and passx= ? ";
$result = DB::instance()->prepare($query)>execute
(array($m,$s))->fetchAll();
foreach($result as $row){
$user[] = $row;
$_SESSION['user'] = $user;
}
我担心会话阵列中的所有数据库列名都可用。如果有任何其他方法,请告诉我。
答案 0 :(得分:1)
是的,$ _SESSION数组是私有的,除非将php配置为在公共可访问的位置保存会话文件或服务器上存在安全漏洞,否则永远不会向用户显示。但是,会话可能会被用户窃取,其他人可以使用某些方法登录。
了解如何防止会话固定here
还相关:Where is data stored in a session?
顺便说一句,您可以使用reset()而不是foreach()来返回数组中的第一个键。
答案 1 :(得分:0)
简而言之,如果你不运行var_dumping $_SESSION
,或者管理从$_SESSION
分配的数据管理不善,那么$_SESSION
的内容无法被拦截客户端 - 侧。它只存储在服务器上。
即使会话被劫持(其中有一系列问题和疑虑),这并不意味着$_SESSION
的内容已完全暴露。