【发布时间】:2015-08-24 18:16:43
【问题描述】:
我有自动递增的 id,因为主要是我的所有数据库表,如用户、订单等。我不想将这些 id 公开给最终用户,因为他们可能会遍历 ID 可以访问用户详细信息。相反,我想使用 2 路数学函数,这样我就可以在不存储数据库映射的情况下对 id 进行混淆和反混淆。
function obfuscate(id)
{
constSeed = 1203793
return (id*constSeed)
}
function deobfuscate(bigid)
{
constSeed = 1203793
return (bigid/constSeed)
}
我什至可以通过 base36 转换器运行 bigid,以获得更小的字母数字 id,可公开发布。
这种方法有问题吗?还有其他建议吗?
【问题讨论】:
-
您不能使用 auto_increment 并以受控随机方式生成 id。 (如果可以预测你正在混淆什么样的数字,它可以更容易地去混淆它们或猜测有效的混淆值。)......虽然,知道一个 id 不应该是主要的安全问题......用户不应该拥有利用此类知识所需的访问权限。
标签: mysql database web-applications primary-key obfuscation