如何在发出 POST 请求之前加密我的密码。
我正在使用 BCrypt 来加密我的密码。我知道 Bcrypt 提供了 python 解决方案和 JS 版本。目前我在后端使用以下方法加密我的密码:
@accounts_bp.route("/login", methods=["GET", "POST"])
def login():
if current_user.is_authenticated:
flash("You are already logged in.", "info")
return redirect(url_for("core.index"))
form = LoginForm(request.form)
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user and bcrypt.check_password_hash(user.password, request.form["password"]):
login_user(user)
return redirect(url_for("core.index"))
else:
flash("Invalid email and/or password.", "danger")
return render_template("accounts/login.html", form=form)
return render_template("accounts/login.html", form=form)
我尝试通过 bcrypts javascript CDN 导入 bcrypt,然后在
<script>
标签中使用它,但这不起作用。使用:
<script>
document.querySelector("form").addEventListener("submit", function (event) {
event.preventDefault();
var password = document.querySelector("#password").value;
var hashedPassword = bcrypt.hashSync(password, 10);
document.querySelector("#password").value = hashedPassword;
console.log(hashedPassword);
this.submit();
});
</script>
这导致了 bcrypt not Defined 错误。
如何在发出POST请求之前对密码进行加密?
问题是,为什么要先加密密码再发送?
为了安全起见,这样做没有任何意义,因为无论您以明文还是加密方式发送密码,如果被拦截,攻击者都可以使用它来进行身份验证。这称为 传递哈希攻击