【问题标题】:Symfony Rest API, WSSE and BcryptSymfony Rest API、WSSE 和 Bcrypt
【发布时间】:2015-10-08 02:04:40
【问题描述】:

我安装了带有 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 的安全解决方案。

有什么线索吗?

谢谢!

【问题讨论】:

    标签: javascript symfony encryption bcrypt wsse


    【解决方案1】:

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

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

    1. 客户端发送令牌请求,内容如下:
    2. POST /tokens(用户名和密码作为有效负载,请仅使用 https)
    3. 服务器对用户进行身份验证并返回一个令牌(可能是一个 json Web 令牌)
    4. 客户端在每次请求时发回令牌,通常在标头中

    【讨论】:

    • 好的,所以你说的是正确执行此操作的“唯一方法”是使用 https (并且第一次“按原样”发送密码但没关系,因为通过 ssl 我是否正确?)那么,你会建议什么协议?我正在研究 oauth2,但由于我的客户端在 JavaScript(Polymer)中,因此无法保证客户端密钥的安全,或者我在这里遗漏了什么?
    • 猜我不明白。你说你正在使用 FOSUserBundle。所以我假设你有一个服务器可以访问的用户和密码数据库。不是这样吗? oauth2 是一种不同的身份验证方法。让您的服务器对用户进行身份验证,然后将令牌发送回客户端。然后将令牌用于后续请求。
    • 是的,没错。我认为我对 oauth2 感到困惑,因为这种方法确实使用了令牌系统。但是我从您的回答中了解到,我可以在我的实际身份验证系统上构建一个令牌系统。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2014-07-26
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多