小编典典

SQLite查询限制

sql

我正在构建一个小界面,希望用户能够写出他们的 整个 sql语句,然后查看返回的数据。但是,我不希望用户能够做任何有趣的事情,即delete fromuser_table;。实际上,我希望用户能够做的唯一一件事就是运行select语句。我知道没有特定的SQLite用户,所以我在考虑要制定的一套规则来拒绝某些查询。也许是正则表达式字符串之类的东西(正则表达式使我有些害怕)。关于如何做到这一点的任何想法?

def input_is_safe(input):
    input = input.lower()
    if "select" not in input:
        return False
    #more stuff
    return True

阅读 264

收藏
2021-04-14

共1个答案

小编典典

我可以为您的问题建议另一种方法。您可以将对数据库的访问权限限制为只读。这样,即使用户尝试执行删除/更新查询,他们也将无法破坏您的数据。

这是Python如何打开只读连接的答案:

db = sqlite3.connect('file:/path/to/database?mode=ro', uri=True)
2021-04-14