Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

150
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!