gpt4 book ai didi

php - "Changing"MySQL 中所有现有的和新的行 ID,不影响应用程序

转载 作者:行者123 更新时间:2023-11-29 02:03:06 24 4
gpt4 key购买 nike

我的数据库有大约 100 个表,每个表有 1,000 到 20,000 行。每个表都有一个名为 id 的主键 - 在引用表中的行时,我只是使用 id,例如 www.domain.com/viewuser.php?id=3/p>

我很确定我的代码中没有对行 ID 的硬编码引用,它们都引用用户登录时设置的 POST 值或 session ID。

是否可以轻松地将所有现有表的 ID 从自动递增整数更改为唯一的字母数字 ID,而不会导致大量重新编码或更改现有查询等?如果是这样,我该怎么做?

我的想法是手动更新我的所有表格,但这也需要更改每个插入吗?尽管我认为这可能需要更新所有查询,但我可以使用位于两者之间的 unique_id 表做些什么吗?希望有一个简单的方法来做到这一点...

最佳答案

在数据库中随机化 id 值(将它们从 auto_increment 整数更改为字母数字)并没有真正解决潜在的问题。

即使您设法随机化和混淆了 id 值,用户仍然能够通过 URL 操作访问其他用户的数据。您要做的就是降低任何特定 URL 操作尝试成功返回禁止数据的可能性。

如果您的应用需要阻止某些用户查看某些数据,那么您的应用需要提供一种真正的机制来实现这一点。

混淆 ID 值将是一大堆工作,最终,它不会完成真正需要完成的工作。

(请参阅 Sabeen Malik、drew010、Justin Swartsel 的评论,他们都“正确”。)


如果您的应用程序已经实现了防止访问禁止数据的机制,则不需要混淆 ID 值。

这些 ID 值真正需要混淆的唯一地方是在 URL(或 POST)中,并且可以在不更改现有数据库的情况下实现。 (请参阅 Sabeen Malik 的评论;可以加密/解密发送到浏览器/从浏览器发送的 id 值……如果浏览器中运行的 javascript 取决于 id 值是“可订购的”,则存在一个大问题。 .)


我知道这可能不是您在原始问题中寻找的答案。但如果没有充分的理由,我不会努力改变 id INT AUTO_INCREMENT 值。

关于php - "Changing"MySQL 中所有现有的和新的行 ID,不影响应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11511087/

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