在$ _SESSION上依赖网站安全是否安全?

时间:2013-05-24 17:15:31

标签: php

我总是在$ _SESSION数组上设置几个vars来控制我网站上的访问权限,但我想知道这是否是一个安全的解决方案,或者会有更好的东西:

($_SESSION['admin'] == 1) ? take_control_of_my_site : get_back;

3 个答案:

答案 0 :(得分:4)

会话数据在服务器端维护。只要

,您就可以依赖数据
  • 您的服务器是安全的
  • 您仔细验证您放入会话的所有数据。

答案 1 :(得分:2)

会话是安全的。即使会话变量的名称也是安全的,选择其他名称也不会增加安全性。

PHP中的问题是会话机制。它默认使用文件,这可能会大大减慢您的网站速度并且扩展性非常差,并且可能因为suoshin php补丁而不安全。

使用数据库后端的会话更加安全,可以很好地扩展,并保证会话数据安全(依赖于基于数据库的安全性)。如果黑客拥有您的数据库,会话是您最不担心的,因为它们可能还有您的所有密码哈希值。

答案 2 :(得分:1)

会话本身并不安全。存在风险,但可以减轻风险。

了解风险是很好的,这样你就可以学习如何避免它们,但你不应该做的一件事是完全避免使用会话。会话是一个成熟的工具,使用得当它们非常安全可靠。

事实上,编写一个不使用某种会话的有用网站非常困难。如果你不使用内置的,那么你最终会编写自己的 - 而且在大多数情况下,真正 存在安全风险。 (我知道那些已经沉迷于会话安全风险的程序员,最终只是因为他们不想使用会话而实现安全性较低的解决方案。)

值得指出的是,最新版本的PHP已经使巨大在安全性方面取得了进展。旧的PHP版本中有许多功能对安全性确实不利;最新版本的PHP已经做出了很大的努力来弃用和删除这些不良功能。您会注意到会话不在该列表中。他们不需要任何重大的安全工作。这应该告诉你需要知道的一切。

默认情况下,会话以纯文本形式存储在服务器上。这应该不是问题,除非您的服务器可以被不需要的用户访问。如果是这种情况,那么您的安全性可能已经被拍摄,所以这不是一个真正的问题,但在极少数情况下您可能会担心这一点,可以让PHP通过{{3}提供会话加密功能。