【问题标题】:Why are password fields usually not autofilled in $_POST?为什么密码字段通常不会自动填充到 $_POST 中?
【发布时间】:2013-01-02 16:05:31
【问题描述】:

在许多不使用 AJAX 的网站中,注册表单通常会在尝试失败时填写所有输入数据,但通常情况下,密码字段必须由用户重新填写。

我的问题是,为什么 Web 开发人员会选择这样做?我的第一个想法是,他们试图阻止恶意脚本在页面加载时窃取密码,但是,他们可以使用onKeyUp 轻松做到这一点。

有什么想法吗?

【问题讨论】:

  • 我想它背后的想法是响应不应该包含密码。如果输入的值在响应中设置,则响应包含密码。
  • 这似乎是浏览器的行为。
  • 这是一个很好的安全措施,密码不应该被保存或准备自动完成(取决于你的偏执程度),如果他使用了一个不符合安全要求的非常简单的密码,为什么要保留它呢?

标签: html forms security post


【解决方案1】:

浏览器具有专门用于密码的功能,并且在用户明确允许浏览器时保存。大多数浏览器询问“您要存储密码吗?”

当用户不在他/她的机器上时,您可以进一步保留主密码以保护保存的密码。

IMO,我认为保存密码并没有错,因为,由于我让浏览器保存我的密码,我通常倾向于使用 更强的密码,因为我倾向于使用自动生成的密码,通常很难记住。此外,它还可以帮助我避免在多个网站上使用单一的密码变体。

无论您是否保存密码,您都可以通过多种方式嗅探密码。网站通常具有密码恢复功能,如果密码泄露,它会链接到我的手机。

因此,网站应该允许用户将密码保存在浏览器中,这将责任推给用户,他/她决定如何使用密码。

【讨论】:

    【解决方案2】:

    因为要自动填充字段,所以如果您查看标记,您会看到类似 <input type="password" value="YOURPASSWORDHERE" /> 的内容,这对于安全性来说不是很好。在 XSS 方面,获取标记比监视 JS 事件更容易,因为我可以请求页面比使用 JS 操作 DOM 更容易。

    【讨论】:

      【解决方案3】:

      这与脚本无关,网站需要信任在其上下文中运行的脚本。

      浏览器通常会缓存页面标记。您可能不希望将密码保存在缓存中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-10
        • 2016-07-20
        • 2013-06-01
        • 2013-06-08
        • 2011-10-24
        • 2021-01-10
        • 2018-09-04
        • 2019-11-01
        相关资源
        最近更新 更多