用户登录安全性。 Session vs Mysql活动用户表

时间:2011-08-30 11:52:15

标签: php mysql session mysqli

我正在考虑安全问题,提出一些问题,阅读一些文章.....从所有这些文章中获取所有信息并使用截然不同的方法并将它们放在一个位置以便正常用户登录并且很难用户检查系统。

今天我已经阅读了有关活跃用户列表的mysql表而不是存储会话。 据我所知,会话太难以保证,另一方面我觉得mysql表很容易制作。

例如,用户登录。我可以简单地将新数据插入active_users_table并在那里添加用户IP,而不是进行一些“用户”会话。

在所有页面上我可以向客户端询问ip,然后转到mysql表检查是否登录了这样的ip-user,如果是,请检查用户拥有哪些权限并给予相应的访问权限。

问题1。这不简单吗?更容易制作,然后确保会议安全?

问题2。如果这个系统足够好,我可以停止我的研究并使用这种方法构建网站问题是我如何理解用户是否仍处于活动状态?如果他按“退出”按钮确定,我将退出他并从表中删除他的记录。但是,如果他重新启动他的电脑或什么?我怎么能理解记录什么时候可以销毁?

问题3。当我使用数据库时,一个人告诉我使用mysqli而不是mysql命令。它们是一样的所以我只需要在我的所有命令中添加“i”,它没关系,或者mysqli有点不同,需要一些研究?还有为什么它更好?为什么我不能使用我习惯的普通mysql命令?

2 个答案:

答案 0 :(得分:4)

不,这不是那么简单。 (如果那么简单,我们会这样做:)

您需要能够唯一标识用户的内容。知识产权不会这样做。此外,它需要是不可预测的,难以劫持,不会出现在服务器日志中等等。

目前接受的标准是:使用长而高的熵随机令牌并将其存储在cookie中 对于PHP,请使用PHP的会话功能。

安全是一个非常微妙的专业领域,最好的建议是:不要发明自己的安全方案。

您可以将会话数据存储在数据库中而不是存储在文件中,没问题。 可能甚至可以添加到整体安全性中。但话说回来,它可能只是做得不好。 (这取决于可能的因素)

答案 1 :(得分:1)

会话CAN BE并且经常被存储在数据库中。所以没有会话与数据库。 Session是一种在HTTP请求之间保持信息的方式,因为HTTP是无状态协议。

会话与您的方法之间的区别在于会话依赖于cookie,而您依赖于IP。但是可以有多个用户使用相同的IP。所以你的方法不安全,会话更安全。

从安全的角度来看,提供数据库而不是默认的文件保存机制,因为在共享环境中,其他用户可以读取会话文件。此外,如果您有大量活跃用户,则数据库中的会话可以更容易扩展。

你应该关心会话劫持和会话固定攻击。这些都与您存储会话数据的方式无关。

问题3与会议无关,值得自己提问。但mysqli只是更新的扩展,并支持更多功能。在大多数情况下,它与mysql函数完全相同。