我在salt +密码上使用SHA-512哈希1000次。在查询有关用户的信息时是否可以安全返回,或者我应该保护它并使其仅通过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}
它被公开是否重要?
答案 0 :(得分:10)
为什么曾返回用户密码以响应任何面向公众的查询?返回密码的形式并不重要 - 这从根本上说是不安全的!
密码可以破解。给定哈希以及如何构造哈希的知识,您可以强制执行相关参数。尽管它需要花费1000倍的时间,并且盐可能必须被强制执行(如果不包括在查询响应中),仍然存在这种可能性(并且有足够耐心,有合适资源的人,如果值很高,可能会这样做足够)。不要冒风险 - 只是不要以任何形式披露密码。
答案 1 :(得分:3)
您不应公开任何超出必要的信息。使其仅通过HTTPS可用 - 我只能通过HTTPS点击URL并且他们的密码哈希仍然暴露。
忘记密码,您还会公开用户的电子邮件地址。锁定此API的任何内容。