转义用户提供的QSqlTableModel.setFilter字符串

时间:2018-02-23 16:15:46

标签: python pyqt5 sql-injection qsqltablemodel

我想使用QSqlTableModel为我提供过滤后的数据,其中过滤器来自用户输入。我知道我可以在没有WHEREWHERE的情况下传递QSqlTableModel.setFilter条款。然而,该方法看起来非常宽松(例如,它可以run on into ORDER BY clauses)。

如何转义用户提供的任意字符串或正则表达式,将其作为过滤器传递给QSqlTableModel.setFilter?如果我的数据库中有Little Bobby Tables,我希望用户能够找到他,我应该为escape使用什么?

QSqlTableModel.setFilter("name REGEXP {:}".format(
    escape(
        "Robert'); DROP TABLE Students; --"))

0 个答案:

没有答案