2011-03-26 97 views
2

我已经构建了我的第一个登录系统。用户输入一个用户名和密码,并给他们一个带有用户名和ID的会话ID。保护会话ID

此用户名和ID然后用于自定义他们看到的页面。

每个用户的用户名和ID基本上都是公开信息,但会话ID仅由系统在登录时生成。

问题:

什么是这里使用会话ID,其中内容基本公共而是让你必须先登录会话ID的安全隐患?

有人可以从其他人的公共ID和用户名伪造会话ID,因为这是一个会话ID包含在这里?这很容易吗?

他们有什么常见的事情可以让它更安全吗?

+0

Google用于防止会话劫持和会话固定。 – zerkms 2011-03-26 11:44:10

回答

2

Php自己的会话功能非常好,会话的信息不会与用户一起存储,而是存储在服务器上,会话ID有点像密码。

如果您想了解与会话的安全,我强烈建议更换this video of a speaker at defcon 18.

基本上会是足够安全的,但如果你足够了解服务器和用户,你可以破解它,但它是一个漫长而艰难的进程通过,大多数系统不会给你足够的信息来破解会话。

+0

+1,尽管有足够好的方法来防止这种会话劫持(通过猜测sid),这使得它几乎完全浪费时间。 – zerkms 2011-03-26 11:48:47

0

由于会话ID用于在初始用户认证后使用用户名和密码对用户进行认证,因此会话ID是新的认证密钥,因此必须加以保护。

而且由于在大多数情况下可能会话ID的范围已经是已知的(PHP使用128位,160位或其他取决于hash function),但全范围在合理的时间内无法利用,所以更容易对Session HijackingSession Fixation等会话执行更多自适应攻击。还有着名的protection measurements against these attacks on sessions以及developing guidelines