Python SQL如何使用单个用户而不是所有用户
所以我用用户名和密码创建了一个基本的SQL表,我注册了,一切都很顺利。现在让我明确一点,如果你没有登录,除了登录和注册之外,你根本无法访问该网站。我有一个名为“Python SQL如何使用单个用户而不是所有用户,python,sql,database,sockets,Python,Sql,Database,Sockets,所以我用用户名和密码创建了一个基本的SQL表,我注册了,一切都很顺利。现在让我明确一点,如果你没有登录,除了登录和注册之外,你根本无法访问该网站。我有一个名为“”onlineORoffline“的列,当用户连接到服务器时,该列将联机,但当我执行该语句时 status = user_info[5] #user_info[5] is rather he is online or not if status == 'online':.. 如果他在线,他可以访问该网站,但问题是任何人都可以访问该网站
”onlineORoffline“
的列,当用户连接到服务器时,该列将联机,但当我执行该语句时
status = user_info[5] #user_info[5] is rather he is online or not
if status == 'online':..
如果他在线,他可以访问该网站,但问题是任何人都可以访问该网站,不仅是刚刚登录的用户,而且是因为他在线而访问该网站的所有人,因此在用户注销该网站之前,此声明是真实的。那么我该怎么做才能使它只适用于他,而不是所有登录服务器的人(对于后端,我使用的是python套接字)。我是在python上做这件事的,有没有一种方法我只能与登录的单个客户端一起工作?您可以找到许多关于设置服务器身份验证系统的教程,但这里有一个简短的答案。对于生产使用而不是学习,更好的答案通常是使用已经过其他人测试的现有库或框架 不要在数据库中设置“在线”,而是生成某种类型的唯一值。(一种快速且可能不太安全的方法:当前服务器时间的md5哈希+用户ID+一些秘密) 将该值与用户ID一起设置为用户浏览器中的cookie 将该值存储为数据库中的当前会话字段 检查浏览器是否设置了用户ID和会话cookie,而不是检查数据库中的“联机”。在数据库中查找用户ID的当前会话ID,并查看它们是否匹配。如果没有,则显示“会话已过期”和登录页面 SQL注入:清理输入并使用存储过程或安全库,以防止“小Bobby表”将命令塞入ID或会话cookie 更多详情: 如果浏览器转到您的页面,它将具有以下内容之一:
- 没有cookies:只显示登录页面
- 用户ID cookie,会话ID cookie:验证,如果有效,则视为已登录
UserID UserNmae SessionID
1234 Fred 1234abcd1234abcd...
1235 Barney null
1236 Wilma 7fe0320a....
每次用户成功登录时,SessionID都会更改,因为服务器会生成一个新值,并将其存储到数据库和响应页面的标题中,以便成功登录
因此,如果Wilma打开Firefox和Chrome并使用Firefox登录,它将获得一个会话cookie“7fe0320a…”,并登录
但是Chrome不会有cookie,所以它会获得登录页面。如果Wilma随后使用Chrome登录,数据库行SessionID将更改为“abcd0f03…”,Chrome将被指定为其会话cookie
现在Firefox仍然有它的“7fe0320a…”cookie,但该cookie与现在有“abcd0f03…”的数据库不匹配。它是无效的,因此Firefox将获得登录页面,必须再次登录。您可以找到许多关于设置服务器身份验证系统的教程,但这里有一个简短的答案。对于生产使用而不是学习,更好的答案通常是使用已经过其他人测试的现有库或框架 不要在数据库中设置“在线”,而是生成某种类型的唯一值。(一种快速且可能不太安全的方法:当前服务器时间的md5哈希+用户ID+一些秘密) 将该值与用户ID一起设置为用户浏览器中的cookie 将该值存储为数据库中的当前会话字段 检查浏览器是否设置了用户ID和会话cookie,而不是检查数据库中的“联机”。在数据库中查找用户ID的当前会话ID,并查看它们是否匹配。如果没有,则显示“会话已过期”和登录页面 SQL注入:清理输入并使用存储过程或安全库,以防止“小Bobby表”将命令塞入ID或会话cookie 更多详情: 如果浏览器转到您的页面,它将具有以下内容之一:
- 没有cookies:只显示登录页面
- 用户ID cookie,会话ID cookie:验证,如果有效,则视为已登录
UserID UserNmae SessionID
1234 Fred 1234abcd1234abcd...
1235 Barney null
1236 Wilma 7fe0320a....
每次用户成功登录时,SessionID都会更改,因为服务器会生成一个新值,并将其存储到数据库和响应页面的标题中,以便成功登录
因此,如果Wilma打开Firefox和Chrome并使用Firefox登录,它将获得一个会话cookie“7fe0320a…”,并登录
但是Chrome不会有cookie,所以它会获得登录页面。如果Wilma随后使用Chrome登录,数据库行SessionID将更改为“abcd0f03…”,Chrome将被指定为其会话cookie
现在Firefox仍然有它的“7fe0320a…”cookie,但该cookie与现在有“abcd0f03…”的数据库不匹配。它无效,因此Firefox将获得登录页面,必须重新登录。s