我想设计一个REST端点(POST),它接受请求主体中的一些敏感标识符信息:
{
"someDataToSearch": "abcdefgh"
}然后,我希望散列abcdefgh,并在我们的数据库中搜索该哈希,并返回相应的实体,在此之前,该实体将作为某些业务逻辑的一部分生成并存储在DB中。
我想用Bcrypt来做这件事,但是我已经意识到需要一个盐来生成,我们不会把盐作为上面请求体的一部分。所以我不认为我们可以用它来查找,如果我错了,纠正我?
什么是安全的算法和方法来做到这一点?谢谢
发布于 2020-10-02 16:18:55
基于您的评论,为了简单起见,我将假设您要搜索的输入是一个密码。
因此,您不希望将原始密码存储在数据库中,因此您将存储数据库的密码散列。现在,您希望能够在本专栏中搜索。这就产生了一些问题:
解决方案将取决于对所需和不需要的安全属性进行更深入的分析。
退一步看,这看起来有点像密码验证:用户用他们的密码登录,服务器查找他们,并为他们返回一堆数据。这里的关键点是,没有系统使用密码作为查找密钥;这就是用户名的用途!提供这个秘密只是为了证明他们是他们所说的那种人。
我同意@Steffen的观点,这似乎是一个XY问题。你可能陷入了死胡同,因为你想要解决的更大的问题不符合我们知道如何有效解决的问题。这可能是回到绘图板的时间,看看你是否可以重新铸造你的问题,以便它符合一些既定的模式。
https://security.stackexchange.com/questions/239106
复制相似问题