首页 > 解决方案 > 在Vue中将密码字段绑定到数据对象属性是否安全?

问题描述

这个问题让我很困扰。

假设我想构建一个登录组件以在我的应用程序(使用 Vue)中使用,其中有 2 个预期的输入字段,一个用于用户 ID,另一个用于密码。在这个问题的上下文中特别关注的是密码输入字段。

<input id="password" type="password" class="field-input">

我知道您可以使用 v-model 进行 2 路绑定(以及使用 v-bind 进行 1 路绑定),但问题是密码“应该”以这种方式绑定到数据对象吗?安全吗?这是否意味着密码以纯文本形式存储在数据对象中?如果这不是一种安全的方法,那么还有其他方法吗?

标签: javascriptvue.js

解决方案


从技术上讲,您可以,但最好不要在客户端中保存密码。

使用令牌。如果您想要一些复杂性和注意事项,请使用 JWT。但只需使用令牌。就像一个安全生成的字节列表,编码为字符串,然后将其作为 cookie 保存在该客户端上,或者localStorage将其与您的所有请求一起发送。

当用户输入用户名和密码时,您点击了授权 API 端点,如果凭据良好,您将在数据库中创建一个会话并将其与您创建的这个安全令牌相关联。发出请求后,您可以查看会话并确保它仍然有效/未过期,并且您知道它属于哪个用户,以便他们“经过身份验证”。</p>

此外,使用 HTTPS 并阅读有关授权与身份验证的信息。


推荐阅读