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 解密。
我在 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 解密。