0

我安装了带有 FosUserBundle(用户)、FosRestBundle(API)和 NelmioCorsBundle(CORS)的 Symfony 2.7。我遵循了一些指南,这些指南是在 FosUserBundle 使用带有盐的 SHA512 进行密码加密的(如果我理解得很好的话)时间编写的。

我的 Symfony 上有一个工作的 WSSE 服务器,我正在尝试以安全的方式从 Javascript 客户端发出请求。使用旧的“SHA15 + salt”方式,我知道如何做到这一点:用于在客户端获取 salt 的公共 api,我们在通过 WSSE 标头发送之前“在数据库中”重新创建加密密码。我认为这也有利于将密码保存在缓存中(比未加密的密码更好)。

但是由于 bcrypt 有一个内置的盐,我怎样才能在客户端生成加密密码?当然,一种解决方案是停止使用 bcrypt 并开始使用 SHA512 + salt 但不太安全;其他解决方案类似于 oauth2 和 HTTPS,但我现在想找到一个没有 HTTPS 的安全解决方案。

有什么线索吗?

谢谢 !

4

1 回答 1

0

如果您能够在客户端生成与您的服务器相匹配的加密密码,那么您也可以根本不使用密码。不管你怎么做,它都会不安全。

看一下基于令牌的方法。那里有很多例子。

  1. 客户端发送一个令牌请求,例如:
  2. POST /tokens(用户名和密码作为有效负载,请仅使用 https)
  3. 服务器对用户进行身份验证并返回一个令牌(可能是一个 json web 令牌)
  4. 客户端在每个请求上发回令牌,通常在标头中
于 2015-07-18T15:14:57.533 回答