用户可以查看会话中保存的数据吗?例如,如果用户登录到网站,并且他的user_id
被保存在会话中,那么只要用户的ID在会话中可用,用户就会保持登录状态。他能查看会话数据吗?如果他能看,那不好吗?
对不起,如果我的问题听起来很愚蠢,但我有一个问题,我一整天都想解决这个问题:
我正在使用闪存上传器,当我将数据发送到另一个页面时,闪存上传器丢失数据,我无法从会话中获取数据,正如我在my previous question中所说的那样。由于发送session_id
并未解决我的问题,因此我想将会话中存储的user_id
与其他数据一起传递,并且当后端脚本获得user_id
时,再次将其存储在会话中,以便用户保持登录状态。
例如,我可以使用javascript(uploadify语法)发送user_id
:
'scriptData' : {'uid': '<?=$this->session->userdata('uid')?>'},
在后端脚本上,我可以通过以下方式获取user_id
:
$uid = $_REQUEST['sid'];
var_dump($uid);
现在,由于我使用javascript将user_id
发送到后端脚本,因此用户可以非常轻松地看到他的user_id
正在传递。我怀疑它是否非常不安全?用户可以以某种方式更改用户ID并发送它(并以另一个用户身份登录吗?)是否可能?
另一种可能的方法是传递session_id而不是用户ID(我暂时无法做到),发送session_id
比发送user_id
更安全吗?
答案 0 :(得分:3)
你永远不应该发送user_id
。这将是您应用中的一个巨大安全漏洞,因为用户可以将其更改为入侵其他用户帐户。
您应该发送session_id
,然后在服务器端执行此操作:
<?php session_id($_GET['session_id']); ?>
这将启动该会话。
是的,在会话中存储数据是安全的。
答案 1 :(得分:1)
如果您的user_id以任何方式可预测,那么用户可以查看并更改其user_id,这将使您的网站认为它是另一个用户。然后,他们可以访问他们模仿的用户的信息。
这可能是严重违反用户安全的行为。
答案 2 :(得分:0)
不,他们无法查看会话中存储的数据。
会话ID仅指服务器上的会话数据,因此如果您传递session_id,则会话中存储的数据是安全的。
请注意,您不应公开user_id,因为它提供了更改它的机会。