Flask - 在 POST 请求之前加密密码

问题描述 投票:0回答:1

如何在发出 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请求之前对密码进行加密?

python flask encryption bcrypt
1个回答
0
投票

问题是,为什么要先加密密码再发送?

为了安全起见,这样做没有任何意义,因为无论您以明文还是加密方式发送密码,如果被拦截,攻击者都可以使用它来进行身份验证。这称为 传递哈希攻击

© www.soinside.com 2019 - 2024. All rights reserved.