2011-12-09 128 views
6

如何提高会话的安全性?Codeigniter会话安全

$this->session->userdata('userid') 

我一直在为我的ajax调用扔这个坏小子。有些案例我没有。然后,我想,这是真正安全使用DOM的ID?如果DOM更改为破解用户帐户数据会怎么样?那么我就像我猜想用户在做任何与他们的id有关的事情时,只有会话应该被引用。我对吗?

参考,像这样:

$this->some_model->do_data_stuff($dataId, $this->session->userdata('userid')); 

然后我读这样的:

虽然保存在用户的cookie中的会话数据阵列包含 会话ID,除非你存储在数据库中的会话数据没有 的方式来验证它。对于需要很少或根本没有 安全,可能不需要会话ID验证某些应用程序,但如果您的 应用程序需要安全性,有效性是必需的。否则,用户可以修改他们的cookie来恢复旧会话。 http://codeigniter.com/user_guide/libraries/sessions.html

我不会被存储财务数据,但我不希望我的网站上的任何数据发生损坏。是否使用会话验证?这个验证会花费多少开销?会话如何被黑客攻击?有什么需要注意的会话安全性?

回答

18

用笨会话与数据库将是相当安全的。你不必信任用户给出的输入。即使您使用的是AJAX,CodeIgniter会话也可以像任何标准调用一样工作,因此安全性仍然保持不变。

与CodeIgniter的会议会发生什么是服务器存储的cookie,每个用户确实会更改cookie的内容的动作的时候,它首先相比之前的cookie。

如果用户改变浏览器会话cookie的内容,笨会注意到的下一个服务器的呼叫,并为用户创建一个新的会话,登录基本上他出去。

为你使用

$this->session->userdata('userid'); 

你会得到信任的服务器端数据笨并不真正需要存储在用户的浏览器cookie中的数据,并为长。用户不能改变这一点。此外,cookie可以被加密,并且你应该加密它。只需查看CodeIgniter的config.php即可。

周围有会话数据的几个其他保护措施:短期刷新超时(通常为300秒),它会检查IP改变,如果浏览器改变。换句话说,在最糟糕的情况下,欺骗会话数据的唯一方法是让具有相同IP的相同版本的浏览器直接访问计算机以复制/粘贴cookie,并完成此操作在5分钟内。

所以,要提防的人坐在你身边!