我正在使用 Flask over Python 来开发登录系统。
当用户使用现有用户名注册时,它不会返回错误消息,而是返回数据库错误,这是一个安全缺陷。
@app.route('/register', methods=['GET','POST'])
def register():
form = RegisterForm(request.form)
if request.method == 'POST' and form.validate():
email = form.email.data
password = sha256_crypt.encrypt(str(form.password.data))
cursor=db.cursor()
if cursor.execute("INSERT INTO user(email, password) VALUES(%s ,%s)", (email, password)):
db.commit()
flash('Success','success')
else:
flash('Success','error')
cursor.close()
redirect(url_for('index'))
return render_template('register.html', form=form)
如何控制它返回的消息?
最佳答案
改进插入语句以处理已经存在的值:
cursor.execute('INSERT IGNORE INTO user(email, password) VALUES(%s ,%s)')
这样就不会出现DB错误,可以根据返回值进行处理。
关于python - 使用 Python Flask 向现有用户注册时 Web 应用程序显示数据库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46882954/