所以我最近决定在我的网站上使用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,那么它只会是它的加密版本,所以毫无用处。
1条答案
按热度按时间2g32fytz1#
我建议使用php的session\u start(),它将处理整个会话,包括需要编写的任何cookie来维护会话,具体取决于您当时的特定连接。
您需要做的就是将此放在php脚本的最顶端:
php常量“sid”应该可以用来获取会话id,如果您愿意,可以将其存储在mysql中用于其他目的,但这可能不是必需的。也可以使用session\u id()。