我正在尝试在codeigniter中推出自己的身份验证系统,并且偶然发现了几个障碍。
如果我将会话设置为使用数据库,那么userdata
是仅存储在数据库中还是存储在cookie中?我想在其中存储散列密码以验证用户实际使用正确传递登录的每个页面加载,并且我不希望散列在客户端可访问。
如何防止会话被盗?我已经启用了IP和主机名验证,这是自动的东西还是我必须自己执行检查?这足以阻止人们窃取会话数据吗?
答案 0 :(得分:3)
Userdata
可以存储在Session中。如果您将会话设置为使用数据库,则唯一的cookie将是ci_session cookie或您指定的任何cookie,并且cookie + ip / hostname将与数据库会话表匹配。
在会话中存储散列密码将完全安全,它位于您自己的数据库中。没问题。
防止会话被盗应该使用ip
或hostname
匹配(每个页面加载或少一点,有些人有动态IP),不确定自动验证,但它总是如果你自己检查就好了。
防止会话数据窃取非常类似。除非有人拦截你的cookie,并且神奇地报告虚假IP(或者,与目标共享IP /主机名),这就足够了。您还可以执行另一项检查,与user_agent
匹配。你必须手动完成。
这几乎就是一切。