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