关于Sessions的另一个安全问题

时间:2011-09-01 10:01:18

标签: php session

我正在尝试制作登录系统。 我正在做什么,当用户登录时,我正在创建Session [' id ']并将用户ID放在那里。 我也正在做所谓的盐安全事情,这是好的。

现在稍后在网站的某些部分我检查会话[' id ']进入数据库检查这个id是否具有高级别的权限并授予该用户一些功能。如果用户是同一个登录用户,避免黑客等等,我也可以检查盐......

我的问题如下。如果用户创建新帐户。并使用他的帐户登录他的盐系统将是好的,所以他将通过该网站,但他的身份将有点低,所以他将无法获得所有功能。但!如果用户明白我正在检查他的身份以了解他是谁,他可以在登录后以某种方式为服务器提供不同的会话[' id ']吗?例如,级别高的用户,并获得所有奖金? 。因为我做了会话

ini_set('session.use_only_cookies', true); 
session_start();

所以可能所有的会话数据都在他的电脑上吗? 那有可能吗?

已解决

3 个答案:

答案 0 :(得分:2)

会话ID应该是一个完全随机的数字。

因此,即使用户将其会话ID更改为另一个会话ID,他也不太可能以这种方式进入另一个有效会话。几乎总是会让他退出。

会话背后的数据仅存储在您的服务器上。

只有会话ID本身才会被提供给网络浏览器。

  

ini_set('session.use_only_cookies',true);

您提到的设置只是确保会话ID仅通过cookie传递,而不是作为HTML或URL的一部分传递。

答案 1 :(得分:1)

使用$ _SESSION很好,因为包含实际数据的文件驻留在服务器上,而不是客户端的机器上。客户端只保留一个引用,以便PHP知道在服务器上的会话cookie中查找客户端会话数据的位置。

答案 2 :(得分:0)

只有会话ID(通常是PHPSESSID)cookie驻留在用户计算机上,并且负责告诉服务器正在使用哪个会话实例。存储在$ _SESSION中的数据在服务器内是安全的,除非您手动将它们发送到客户端,否则服务器外的任何人都无法看到它们。