【问题标题】:flask sqlite3 security issue [duplicate]烧瓶 sqlite3 安全问题 [重复]
【发布时间】:2019-04-19 10:29:58
【问题描述】:

我编写了一个 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()

【问题讨论】:

  • 您应该使用 ORM 或以某种方式在内存中进行更改并立即将它们提交到实际数据库

标签: python database flask sqlite


【解决方案1】:

这不是编程问题。

了解 Unix (Linux) 文件所有权和权限的概念是绝对必要的 - 包括 umask 值和目录权限。教程数以千计。

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

数据库文件的最严格文件模式是 0600(文件模式是八进制数)。

【讨论】:

    猜你喜欢
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2019-01-04
    • 1970-01-01
    • 2019-01-02
    • 2016-04-12
    • 1970-01-01
    相关资源
    最近更新 更多