7

我在盐 + 密码上使用 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}

公之于众有什么关系吗?

4

2 回答 2

10

为什么您会返回用户密码以响应任何面向公众的查询?以何种形式返回密码并不重要——这根本上是不安全的!

密码可以被破解。给定一个散列和如何构造散列的知识,您可以暴力破解相关参数。即使它需要 1000 倍的时间,并且盐可能必须被暴力破解(如果不包含在查询响应中),但这种可能性仍然存在(如果价值很高,有足够耐心、拥有正确资源的人可能会这样做足够)。不要冒险——只是不要以任何形式泄露密码。

于 2013-04-03T01:05:19.230 回答
4

您不应公开任何不必要的信息。让它只能通过 HTTPS 使用什么都不做——我可以通过 HTTPS 访问 URL,而他们的密码哈希仍然暴露在外。

忘记密码,您还会暴露用户的电子邮件地址。锁定这个 API 是什么。

于 2013-04-03T01:05:34.220 回答