PRO*_*SOR 2 php session session-variables
我正在一个网站上工作,想要创建用户登录和会话.什么是检查会话是否存在的最安全的方法(如cookie或会话变量检查),或者更好的想法然后在php中使用会话?
session_id()如果没有当前会话(不存在当前会话ID),则返回当前会话的会话ID或空字符串("").
但这只是告诉你会话是否有效.
大多数时候,我只是session_start();在每个脚本的开头调用(即使用户没有登录).在登录时,我$_SESSION['user']使用userid或用户对象进行设置.退出时,我只是unset($_SESSION['user']);.通过检查empty($_SESSION['user'])我可以检查是否有人仍然登录.如果您在会话中的其他位置存储依赖于用户的信息,请不要这样做,否则登录的下一个人可能会收到他不应该看到的信息(在这种情况下使用session_destroy();).
但安全吗?只需通过GET/POST url重写(仅限cookie)来停用会话ID传播,因此它们不会最终出现在可以缓存或分发给其他人的URL中(在这种情况下,会话劫持是可能的).你可以通过设置session.use_only_cookiesphp.ini 来做到这一点.
如果您托管在不受信任和/或配置错误的共享服务器上,可能会出现其他安全问题 - 这可能会导致同一台计算机上的其他人读取您的会话数据.在这种情况下,您可以通过重写会话处理程序将会话数据存储在数据库中.只是session handler mysql在intertubes上搜索,我确信有足够的随时可用的解决方案.并且不要在会话中存储密码等敏感信息,每次需要比较时最好进行查询.
除此之外...使用ssl/https进行登录和用户管理,因此不会传输明文密码.在数据库中只存储带有salt的pw-hashes.不要让任何人看到密码(意思是:永远不要将它们打印到HTML或电子邮件中).不要对用户可以看到的ids使用auto_increment值(因此猜测).好的,那已经不在问题范围内了.