flask sqlite3安全问题

时间:2019-04-19 10:29:59

标签: python database flask sqlite

我编写了一个Flask应用程序,其中用户在5个不同的页面中回答了5个问题,他的回答使用sqlite3发送到了database.db

在Ubuntu上部署应用程序后,我收到一条错误消息,指出该数据库是只读的。因此我通过chmod 777更改了权限。然后问题解决了。

但是我已经阅读了许多关于在任何情况下都不使用chmod 777的建议。 (类似于this one

那我该怎么办? 如何将从用户收到的数据安全地写入数据库?

#a sample part of my code:

@app.route('/g2', methods=['GET', 'POST'])
def k2():
    z1= request.form['z1']
    z2= request.form['z2']
    con = sql.connect("/var/www/FlaskApp/database.db")
    cur = con.cursor()
    cur.execute("UPDATE hoc SET z2=? WHERE id=?", (z2, z1))
    con.commit()
    con.close()

1 个答案:

答案 0 :(得分:2)

这不是编程问题。

理解Unix(Linux)文件所有权和权限(包括umask值和目录权限)的概念是绝对必要的。有成千上万的教程。

最简单的方法是将数据库存储在其自己的目录中。数据库文件应由用于运行flask应用程序的用户帐户拥有。它是开发期间的帐户,而生产中是http服务器的帐户。

该数据库文件的限制性最高的文件模式是0600(文件模式是八进制数字)。