sql - 让一列 ID 只是一个整数(自动增量)是否安全?
问题描述
我有一个表,其中包含一个 id(唯一)和诸如姓名、电子邮件、角色等信息。我打算让我的 id 只是一个自动递增的整数。该 ID 将被放入会话中,并用于获得某些访问权限并查询与所述 ID 相关的某些内容。这样做是否安全,或者我应该让我的 id 更加随机?
我担心有人可能会弄乱会话并更改 ID(因为 ID 是一个自动递增的整数,所以很容易调整)并可以访问其他人的数据。这甚至可能吗?
解决方案
您可以选择 ID 作为 UUID - 通用唯一标识符。许多数据库都支持它,您也可以使用标准 Java 库生成它。它是一个字符串而不是一个数字,而且随机性足以让人难以猜到。稍后,如果您需要合并 2 个表,架构您将不会看到任何冲突。
唯一的缺点是索引效率会降低一些,因为它是一个大字符串,但我会选择它,因为它还有其他好处。
推荐阅读
- javascript - JS - SyntaxError:标识符“financeManager”已经被声明
- c# - 我们可以从同一个可执行文件中调试 .csx(添加断点和监视变量状态)吗?
- python - Django 记录器设置
- reactjs - onClick 不会从 Child 组件更新 Parent 的状态
- sql - 'SQLNCLI10.1' 提供程序未在 VS 2019 的本地计算机上注册
- docker - 如何在 ECS 中查看绑定挂载路径中的目录
- r - 分层ggplot
- python - 有人可以告诉我一个更有效/更短的方法来编写这个 python random # 程序吗?
- postgresql - Postgres ALL 运算符有什么替代品吗?
- python - 非泛型类型的不同运行时行为