gpt4 book ai didi

php - url php 中的哈希 id

转载 作者:行者123 更新时间:2023-12-04 12:52:55 25 4
gpt4 key购买 nike

在我的站点上登录的用户可以创建文档,这与在 Google 文档上非常相似。该文档可以由用户公开或私有(private)(默认)。文档存储在这样的数据库表中:

| id | title | content | public | owner |
| 1 | asd | asd | 1 | 1 |
| 2 | asd | asd | 0 | 1 |
| 3 | asd | asd | 0 | 2 |

如果 public 等于 1,则它是一个公共(public)文档,可以通过任何用户的链接查看:site.com/documents/id

问题是,即使文档可以公开,我也不希望用户一直将 url ID 递增 1 来访问所有公开文档:

  • site.com/documents/1
  • site.com/documents/2
  • site.com/documents/3

等等……

所以也许我应该散列 ID 或类似的东西?像这样:

<?php echo 'site.com/documents/'.md5($id); ?>

问题是,我不知道它在服务器端是哪个 ID,因为它是散列的...

我该怎么做才能解决我的问题?

最佳答案

根据您的安全要求,您应该确保您的文档 ID 实际上是随机的并且不可猜测。如果您只是对自动递增的 ID 进行哈希处理,则生成的哈希值可能看起来是随机的,但是一旦有人注意到您只是对递增的数值进行哈希处理(并正确猜测了您的哈希算法),就很容易猜到可能的文档 ID。

要实现这一点,您可以简单地散列随机数(确保数据库中没有散列冲突),或使用 UUID(有关如何生成它们的示例,请参阅 this question)。

为了将散列标识符映射到现有文档,只需将散列与文档一起存储在数据库中(最好使用散列作为主键)。

关于php - url php 中的哈希 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14922850/

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