gpt4 book ai didi

php - 主键 - 随机字节好或坏

转载 作者:行者123 更新时间:2023-11-29 10:47:03 25 4
gpt4 key购买 nike

我读过一些关于这个主题的文章,只是想得到一些关于使用随机主键而不是自动增量的说明。我正在构建一个应用程序,而不是使用自动增量主键,而是使用以下代码生成包含数字和字母的随机主键:

$bytes = random_bytes(8);
$bytes = bin2hex($bytes);

我想使用随机主键的原因是为了防止网址篡改。我的应用程序也具有创纪录的安全性,但我想要随机主键作为辅助措施。另外,我将此列设置为唯一,以防止任何罕见的碰撞。如果发生冲突,我只是在屏幕上抛出错误,要求使用重新提交生成另一个随 secret 钥的表单。所以我的问题如下:

  1. 我的数据库是 innodb,我的应用程序都是基于关系的(PK/FK 关系)。与自动增量 key 相比,使用随 secret 钥(使用上面的代码)是否会影响搜索性能和/或索引速度?
  2. 除了我已经使用重复错误处理来防止可能发生的冲突之外,还有什么原因我不应该使用随机键(作为主键/索引键)?
  3. 在最终确定此应用程序之前,除了我上面的做法之外,我还应该使用与主键相关的其他建议或最佳实践吗?

谢谢。再说一次,我知道还有其他文章,但其中许多已经过时了(在 php 7 random bytes 之前),所以我认为我对随机主键是否被认为是最佳实践有一个新的看法(为什么或为什么不)。谢谢。

最佳答案

糟糕——事实上,非常糟糕。 Random primary keys play havoc with MySQL's page cache ,这会使负载下的性能变差。这也意味着您将无法使用某些 SQL 功能,例如多行插入。

如果您想保护 URL 中的 ID 免遭篡改,请考虑在 URL 中包含标识符的 key 哈希(例如 HMAC)。

关于php - 主键 - 随机字节好或坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44361466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com