【发布时间】:2011-07-26 17:06:57
【问题描述】:
为什么 Codeigniter 会这样做?我的意思是,如果用户可以看到他们的会话中存储了哪些数据,那不是很不安全吗?如果他们改变 cookie 中的值怎么办?
【问题讨论】:
-
This 是另一种选择......而且还有更多。
标签: codeigniter
为什么 Codeigniter 会这样做?我的意思是,如果用户可以看到他们的会话中存储了哪些数据,那不是很不安全吗?如果他们改变 cookie 中的值怎么办?
【问题讨论】:
标签: codeigniter
嗯,它是关于用户的数据。如果他们想改变它……那又怎样?我看不出它有多“不安全”。
您可以加密会话数据,或使用数据库进行会话数据完整性验证。
The documentation is your friend; use it.
对于它的价值,它确实不使用原生 PHP 会话似乎很愚蠢。该文档声称这为开发人员提供了“更大的灵活性”,但鉴于该页面上列出的警告,我无法想象如何。
【讨论】:
The documentation claims that this offers "more flexibility" to developers, but given the caveats listed on that page, I can't imagine how. 用户数据存储在客户端的 cookie 中。这可以通过使用加密的 cookie 进行更改。不是每个人都将私人数据存储到会话中,因此默认情况下不需要对其进行加密。我猜这被称为灵活性功能。
在 Cookie 中存储会话是最糟糕的做法,每个浏览器都有 cookie 的大小限制,而 cookie 是每次请求都会发送的东西,虽然它是简单的 ajax 请求,但这种做法只会让你的请求变慢,我认为在为 Codeigniter 开发会话库时,他们可能会想到,用户只会在会话中存储少量数据,但将会话存储在 Cookie 中简直是愚蠢的想法
【讨论】:
看看这个:https://bitbucket.org/xperez/core-session-storage-for-codeigniter
它是带有原生 php 会话的 ci_session 接口的包装器,因此也适用于 memcached 而不是 DB。
干杯
【讨论】:
好吧,Codeigniter 对会话的开箱即用解释与 PHP 会话的解释不同。如果你想通过 $_SESSION 超级全局变量,你仍然可以使用 PHP 会话,但 Codeigniter 基本上将会话视为更方便的 cookie。不过,您可以将会话存储在数据库中,这就是我所做的,并且会阻止用户更改会话值。
如果您想要半安全的会话变量,如果您不想麻烦地让 Codeigniter 将会话值存储在加密的数据库中,请使用内置的 PHP 变量。
详细文档中解释了一切:http://codeigniter.com/user_guide/libraries/sessions.html
【讨论】: