我可以暴露散列盐和密码吗?

9

我正在对盐值和密码进行1000次SHA-512哈希。在查询用户信息时,将其返回是否安全?还是应该保护它,仅通过HTTPS使其可用?

例如,如果我发出以下请求:

GET: http://domain.com/users?id=437

它返回:

{"firstName":"Eliot","lastName":"My last name","email":"email@emailplace.com","password":[91,49,-34,77,79,-48,67,-62,-12,84,84,-18,-81,23,-92,-31,74,-28,-80,102,60,35,-102,115,18,-76,20,-90,-8,91,13,23],"authToken":"33c977b1-5ab6-4a8a-8da9-68c8028eff92","id":179}

这是否重要,它被公开了吗?


5
不知出于何种好奇心,为什么有人给Eliot的问题点了踩?他做对了事情,通过询问自己不熟悉的内容来获取信息。 - jww
1
好问题,但似乎有点离题。[security.se]似乎是更好的选择。 - nneonneo
2个回答

11
为什么你会在任何公开查询的响应中返回用户密码?无论以何种形式返回密码,这都是基本不安全的!密码可以被破解。通过给定哈希和如何构建哈希的知识,您可以暴力破解相关参数。即使需要更长时间并且盐可能需要暴力破解(如果未包含在查询响应中),但仍存在可能性(如果价值高,有耐心且具备正确资源的人可能会执行)。不冒险——永远不要以任何形式披露密码。

1
我正在使用Play框架,它可以自动渲染包含密码的模型为JSON格式。由于方便起见,我只会返回用户的密码。我只是出于好奇,想知道在超级哈希密码的情况下,是否可能执行任何恶意操作。 - eliot
是的,密码可能会被破解,而重新使用密码的用户可能会受到严重影响(超出您网站的范围)。在如此重要的情况下,方便性不应该凌驾于安全性之上。如果需要,可以将密码从模型中剔除。 - nneonneo

4

不要暴露比必要更多的信息。仅通过HTTPS使其可用并没有什么作用-我仍然可以通过HTTPS访问URL,他们的密码哈希仍然会被暴露。

忘记密码,您还会暴露用户的电子邮件地址。锁定此API。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接