首页 > 解决方案 > 在这种情况下,jwts 会降低性能并且不会改善任何东西吗?

问题描述

正如标题所说,我在问 JWT 是否是一个很好的补充,或者在这种情况下是否不需要或最好不要使用它们。我已经阅读了很多信息,但仍然无法给出完整的答案。

我正在考虑以下几点:

  1. 安全。
  2. 速度/响应时间/性能。
  3. 服务器中使用的资源(CPU、RAM 等)。
  4. 禁用多重登录(每个帐户不超过 1 个客户)。

我的情况客户端:

我的情况服务器端:

我现在是怎么做的:

对于“第一”和“第二”,我正在使用:

<?php
.
.
.
$token = bin2hex(random_bytes(32));
$stmt = $con->prepare("UPDATE accounts_table SET loggedin = 1, token = ? WHERE Username = ?");
$stmt->bind_param('ss', $token, $username);
$stmt->execute();
echo $token;
?>

对于“第三”,我正在使用:

<?php
.
.
.
$stmt = $con->prepare("SELECT * FROM accounts_table WHERE username= ? LIMIT 1");
$stmt->bind_param('s', $user);
$stmt->execute();
$result = $stmt->get_result();
$result = $result->fetch_array();
if ($token==$result['token'])
  {in pseudo-code} tell the client that everything is ok
else
  {in pseudo-code} tell the client that he is not allowed to use the app anymore.
?>

关于我之前写的东西。

  1. 安全

从我从 StackExchange 和 StackOverflow 的很多答案中读到的内容来看,只要私钥不被盗,JWT 是安全的。如果有什么我错过了,请告诉我。

  1. 速度/响应时间/性能和 3. 服务器中使用的资源(CPU、RAM 等)

根据我在有关 JWT 的文章中读到的内容(例如:Why jwts as session tokens),它们会增加请求的大小,并增加每个请求所需的资源(CPU、RAM 等),因为它必须计算哈希。我还阅读了有关 HTTP/2 hpack 的 http 的静默杀手功能,这表明由于压缩,增加的大小并不重要。

但是我仍然担心资源使用量的增加,性能影响会明显吗?我不得不问这个问题,因为我不知道如何重现 50 个用户同时使用该应用程序的情况。

  1. 禁用多重登录(每个帐户不超过 1 个客户)。

由于登录会使用“loggedin”标志检查用户是否未登录,因此不允许多重登录。如果您发现缺陷,请告诉我。

  1. 额外:有没有更好的方法?

我也阅读了有关会话的信息,但是需要吗?它会改善我的情况还是会一样?

提前致谢。

标签: phpc++mysqljwt

解决方案


推荐阅读