【问题标题】:How to make a unique name for each user? [duplicate]如何为每个用户创建一个唯一的名称? [复制]
【发布时间】:2020-05-25 00:48:54
【问题描述】:

我希望在用户注册应用程序时自动生成一个唯一名称,例如 user-53s5ww 或 user-789kss。我如何在 Java 中做到这一点?

【问题讨论】:

    标签: java android firebase


    【解决方案1】:

    一种简单的方法是可以使用系统时间戳,构造名称为“user-”+System.currentTimeMillis()

    名称类似于“user-780832399474455”并且是唯一的

    【讨论】:

    【解决方案2】:

    您可以使用 user +(数据库中用户表的长度 + 1),因此如果您的数据库中有 40 个用户,则当新用户注册时,它的名称可以类似于 user-41。无论如何,您都必须执行一个查询来保存用户,因此它也不会额外调用 DB。

    【讨论】:

    • @EmreDemircan 您在技术上是正确的,但此解决方案将用户 ID 模式暴露给攻击者。让我试着用例子来解释这一点。假设如果攻击者在您的站点上发现了一个安全漏洞并且他知道他的用户 ID 是 ID-40,那么他只需要基于这个简单的模式运行一个循环来攻击其他用户的数据。理想的 id 字符串应该是一个随机字符串。如果是随机字符串,攻击者仍然可以使用随机字符串用户 id 进行攻击,但它会在服务器上产生更多失败案例,分析失败日志将为您提供系统受到攻击的提示。
    猜你喜欢
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多