【发布时间】:2018-04-03 15:42:47
【问题描述】:
我的烧瓶应用程序中有一个 mysql 数据库注册表单,但是当我对其进行测试并输入一些有效凭据时,使用密码 no 时出现访问被拒绝错误(即使我输入了密码),这是我的连接代码:
app = Flask(__name__)
#config for MySQL db
app.config['MySQL_HOST'] = 'localhost'
app.config['MySQL_USER'] = 'root'
app.config['MySQL_PASSWORD'] = '****'
app.config['MySQL_DB'] = 'myflaskapp'
app.config['MySQL_CURSORCLASS'] = 'DictCursor'
#init MYSQL
mysql = MySQL(app)
Projects = Projects()
这是我的注册烧瓶方法:
@app.route('/register', methods=['GET', 'POST'])
def register():
form = RegisterForm(request.form)
if request.method == 'POST' and form.validate():
name = form.name.data
email = form.email.data
username = form.username.data
password = sha256_crypt.encrypt(str(form.password.data))
我已经通过命令行验证了实际数据库存在于 MySQL 中,我也可以访问它,但是当我尝试使用我的烧瓶应用程序时,它失败了。
【问题讨论】:
-
警告:像 SHA256 这样的高速哈希完全不足以存储密码。在绝对最小值使用Bcrypt。
-
Bcrypt 比 SHA256 好?
-
一百万倍。字面上地。 SHA256 很容易破解,尤其是在未加盐的情况下,cracking programs 每秒可以粉碎数百万个排列。 Bcrypt 是故意慢得令人痛苦的,如果你愿意,可以让它变得更加困难,以至于大多数破解者每秒只能执行 几十次。
-
好的,非常感谢,我一定会使用 Bcrypt 而不是 SHA256,但首先我只需要访问数据库。
-
您确定这些是正确的配置参数键吗?我认为小写的
y是令人困惑的事情。 The documentation 指定全大写。
标签: python mysql database flask