Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

147
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda