如何使用 vue 或 javascript 向服务器发送密码?

Posted

技术标签:

【中文标题】如何使用 vue 或 javascript 向服务器发送密码?【英文标题】:How to send password to server using vue or javascript? 【发布时间】:2018-01-19 13:48:27 【问题描述】:

我已经创建了用于登录和注册的 vue 组件。如何将密码发送到服务器?我应该在客户端使用 bcrypt 加密密码,然后将其发送到 Laravel 还是应该将纯密码发送到 Laravel 并使用 bcrypt($request->get('password')); 什么是一个好的选择?

如果我应该在 vue 组件中加密密码,我应该使用什么包/函数才能像 Laravel/php 一样加密密码??

【问题讨论】:

1.你散列密码,你不加密它们。 2. 发送哈希而不是密码几乎没有安全优势,因为中间人攻击仍然可以获得他们登录所需的信息。 3. 使用 https 来保护传输中的密码。 【参考方案1】:

需要在客户端加密密码!

不加密用户密码意味着它容易受到 MITM 攻击 SSL 终止经常发生在负载平衡器上,这意味着纯文本密码从该点传输到您的 Web 服务器不受保护,系统管理员等可以启用日志记录。 开发人员或系统管理员不应该获得用户的密码,如果您不在客户端加密密码就会发生这种情况

【讨论】:

您能进一步解释一下吗?我不明白,例如,如果服务器使用 HTTPS 并且仅启用 HTTPS 协议(不允许仅使用 HTTP),为什么密码容易受到 MITM 攻击?你可以争辩说 HTTPS 不是特别是强加密,但我觉得那是另一个论点。 假设 HTTPS 足够强大,中间人攻击是如何发生的?我真的不明白。【参考方案2】:

实际上并不需要在您的 javascript 代码中加密密码。在 HTTPS 服务器上提供 PHP 服务更为重要。

浏览器和您的网络服务器之间发送的数据将由 SSL/TLS 证书加密。

这里有一些设置启用 HTTPS 的 Web 服务器的指南,我假设您的 php 托管在 nginx 或 Apache 上,带有 php-fpm 或 apache php 模块。

通过letsencrypt,它为您的网络服务器提供免费的 SSL/TLS 证书,以保护客户端浏览器与其自身之间的通信。

https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04 https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04

【讨论】:

所以我可以在使用 axios 后发送我的密码吗?? 对,请确保您已将端口 80 上的普通 HTTP 转发/重定向到 Web 服务器上的 HTTPS 端口 443,这样用户就不会意外使用 HTTP(不安全)发送登录信息

以上是关于如何使用 vue 或 javascript 向服务器发送密码?的主要内容,如果未能解决你的问题,请参考以下文章

vue项目如何打包扔向服务器

vue项目如何打包扔向服务器

如何使用 Javascript 向远程服务器发送数据

如何向组件 vue.js 发送两个或多个参数? (vue.js 2)

Vue 或 Nuxt 中的 textarea 元素默认向控制台抛出消息

如何从 index.html 向 Vue.js 3 实例发送消息?