【问题标题】:FOSUserBundle, password (plainPassword) are not encrypted on submit POST formFOSUserBundle,密码(plainPassword)在提交 POST 表单时未加密
【发布时间】:2016-05-26 14:07:57
【问题描述】:

在我的 Symfony 项目中,我使用的是 FOS 用户包。

在我的 secutity.yml 中,我有这个以便使用 bcrypt 编码器:

security:
    # FOS UserBundle needles
    encoders:
        Symfony\Component\Security\Core\User\User: bcrypt
        MyNamespace\MyBundle\Entity\User: bcrypt
        FOS\UserBundle\Model\UserInterface: bcrypt

我以这样的嵌入形式调用 fos 用户注册表:

$builder
  ->add('contactPhone')
  ->add('contactMobilePhone')
  ->add('user', 'fos_user_registration', array(
                                               'label' => false,
      ))

它呈现给我的例子是:

但是当我提交表单时,我可以在网络控制台浏览器中看到我的密码是纯文本的,每个人都可以使用它们。

所以我可以在控制台浏览器中恢复我的 POST 请求的所有数据:

my_form[user][email]=test@test.com

my_form[contactPhone]=0404040404

my_form[contactMobilePhone]=0606060606

my_form[user][username]=test

my_form[user][plainPassword][first]=test // 第一个密码输入

my_form[user][plainPassword][second]=test // 验证

my_form[save] // 提交 my_form[_token_consumer]=// 不用见他

您可以理解它不安全。我在提交表单时需要对密码进行编码,以免所有人看到它们。

请注意,当我使用 FOSUserBundle 用户登录表单登录自己时,也会发生同样的事情。

【问题讨论】:

    标签: php symfony security fosuserbundle encoder


    【解决方案1】:

    我并不是要成为坏消息的传递者,但您遇到的这种流动是意料之中的。我假设在数据库中您的用户密码实际上是加密的。

    表单数据本身不应包含任何类型的加密。一旦您将表单数据提交到服务器端,数据就会被加密。要正确加密使用输入,必须将纯值提交给服务器。如果您进行了任何类型的“预加密”,则需要更改注册流程以验证哈希并允许将其插入数据库,但不建议这样做。

    如果您担心其他人使用这些数据进行 XSS 攻击,那么您需要设置 CORS/CSRF 来缓解该问题。

    为什么我说你当前的问题不是问题?好吧,如果你去任何一个带有注册表单的站点并提交它,你会在请求参数中看到明文密码,这是正常的。 Facebook 和 Google 都在登录/注册时发送明文密码。为什么?因为这是正常且符合预期的行为。

    【讨论】:

    • 请放心,在我的数据库中,密码是用bcrypt 编码和加密的,我的应用程序稍后将在 https 服务器上。我一直在寻找的是确保我的代码是安全的,并且这种浏览器行为是否“正常”
    • 我认为我的回答解释了它是如何/为什么是正常的。我没有提到 SSL,因为它不在您的问题范围内。如果这回答了您的问题,请将其标记为如此。如果不是,请说明需要哪些额外信息。
    【解决方案2】:

    通过 http 连接发送的每个数据都可以被您通往服务器的路径中的某个人看到(中间人攻击)。

    type="password" 只隐藏屏幕上的字符,甚至您计算机上的其他程序也可以读取数据。

    保护数据的唯一方法是通过 SSL(HTTPS 而不是 HTTP)发送数据

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多