【问题标题】:Obfuscating autoincrement DB id, using mathematical function使用数学函数混淆自动增量数据库 ID
【发布时间】: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


【解决方案1】:

如果您不希望它们访问 ID,则可以仅在 $_SESSION 变量或类似的东西中使用它们。

如果数据对最终用户可见,即使您对数据进行散列或加密, 不会安全的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-10
    • 2014-11-18
    • 2020-06-17
    • 2018-01-22
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多