如何在php和mysql中开始会话id?

egdjgwm8  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(421)

所以我最近决定在我的网站上使用session id来进行身份验证,而不是jwt的,所以我仍然在尝试在这里追赶一点。
我想我关心的很简单。如果我要让我的数据库为登录的用户处理当前处于活动状态的会话(可能是通过一个包含 UserID 以及 SessionID )如何使用php生成完全随机的会话id?然后我将把会话id传递到 httpOnly 饼干。
我想这将与我的Angular 前端工作,因为我可以使用 withCredentials 每个http请求上都有布尔选项,因为我无法直接访问会话id cookie。
因此,当用户想要访问受限区域时,他们的http请求将包含会话id cookie,myphp将通过在 CurrentSession table。这将允许php确定用户的访问级别。
所有这些都将通过https连接完成,但我认为我仍然需要担心csrf攻击,因此我可能会使用double submit cookie方法,因为angular已经提供了对它的支持。
所以我想我的主要问题是,简单地找出一种用php生成唯一会话id的方法是否可以保护我的应用程序?或者对会话id进行加密,这样只有我的php才能对其进行解密是个好主意,所以万一攻击者从cookie访问了会话id,那么它只会是它的加密版本,所以毫无用处。

2g32fytz

2g32fytz1#

我建议使用php的session\u start(),它将处理整个会话,包括需要编写的任何cookie来维护会话,具体取决于您当时的特定连接。
您需要做的就是将此放在php脚本的最顶端:

<?php
session_start();

php常量“sid”应该可以用来获取会话id,如果您愿意,可以将其存储在mysql中用于其他目的,但这可能不是必需的。也可以使用session\u id()。

相关问题