Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

143
Visualizações
evitar la creación de un usuario si su contraseña coincide con un valor en un archivo de texto

Cuando un usuario envía el formulario de registro a Flask, quiero verificar la contraseña que eligió en un archivo con 10000 contraseñas comunes. Si su contraseña coincide con un valor común, quiero mostrar un mensaje en lugar de crear el usuario.

Escribí el código a continuación, pero siempre crea el usuario incluso si ingresa una de las contraseñas comunes. ¿Qué tiene de malo el cheque que escribí?

 @bp.route("/register", methods=["GET", "POST"]) def register(): form = RegistrationForm() if form.validate_on_submit(): user = User(username=form.username.data) with open("VanligePassord.txt") as f: for line in f: if form.password.data == line[:-1]: flash("Passordet ditt er for svakt") else: user.set_password(form.password.data) db.session.add(user) db.session.commit() return redirect(url_for("auth.login")) return render_template("auth/register.html", form=form)
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

El cheque que escribió no se detiene cuando encuentra una contraseña incorrecta, solo muestra un mensaje y luego continúa con el siguiente valor. Y si la contraseña no coincide con el valor incorrecto, va a la rama else y se confirma de inmediato, independientemente de si algún otro valor coincidiera más tarde.

Use any() para verificar si algún valor coincide con la contraseña, luego muestre un error o confirme en función de eso.

 password = form.password.data with current_app.open_resource("common_passwords.txt") as f: common_values = [line.rstrip("\n") for line in f] if any(value == password for value in common_values): flash("Don't use a common password.") else: user.set_password(password) db.session.add(user) db.session.commit()

Dado que está utilizando WTForms, también puede escribir esto como parte de la validación del formulario en lugar de como parte de la vista.

 class RegistrationForm(FlaskForm): ... def validate_password(self, field, data): with current_app.open_resource("common_passwords.txt") as f: common_values = [line.rstrip("\n") for line in f] if any(value == data for value in common_values): raise ValidationError("Don't use a common password.")
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda