Laravel 7 以明文形式发送的授权密码

Laravel 7 Auth password sent in plain text

我在 Laravel 7 中实现了默认身份验证,效果非常好。 但是,我有一个非常特殊的要求,尽管在网络上实施了 SSL,但密码甚至不应该以纯文本形式传输。 一种方法是通过登录页面上的 javascript 处理它,其中我加密密码值并将其发送到服务器,然后在 php 中解密,然后再将其交给 laravel attemptLogin方法。 但是,我不太确定这种方法。 任何帮助都会很棒。

解决方案:

在客户端,使用 crypt.js/aes.min.js 并使用密钥和 iv.

加密密码

在登录控制器中,覆盖凭据方法并在传递到哈希检查之前使用 openssl_decrypt 解密。

这已经在 this answer 上讨论过:

It is standard practice to send "plaintext" passwords over HTTPS. The passwords are ultimately not plaintext, since the client-server communication is encrypted as per TLS.

this one

If you hash on the client side, the hashed password becomes the actual password (with the hashing algorithm being nothing more than a means to convert a user-held mnemonic to the actual password).

This means that you will be storing the full "plain-text" password (the hash) in the database, and you will have lost all benefit of hashing in the first place.

您还可以阅读 this answer 以获得更多安全选项。

我是这样解决的:

在客户端,使用 crypt.js/aes.min.js 并使用密钥和 iv.

加密密码

在登录控制器中,覆盖凭据方法并在传递到哈希检查之前使用 openssl_decrypt 解密。