我编写了一个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()
答案 0 :(得分:2)
这不是编程问题。
理解Unix(Linux)文件所有权和权限(包括umask值和目录权限)的概念是绝对必要的。有成千上万的教程。
最简单的方法是将数据库存储在其自己的目录中。数据库文件应由用于运行flask应用程序的用户帐户拥有。它是开发期间的帐户,而生产中是http服务器的帐户。
该数据库文件的限制性最高的文件模式是0600(文件模式是八进制数字)。