在 Python 中防止 SQL 注入
问题:
您有一个 Python 脚本,更新 SQLite 数据库中的 char(80) 值。字符串值直接从用户处获取并作为 JSON 负载传递到脚本。您知道这种方法容易受到 SQL 注入攻击。
解决方案:
为了防止 SQL 注入,您可以在更新操作中使用参数化查询。参数化查询允许您将值传递给 SQL 语句,而无需将它们直接包含在查询字符串中。这可以防止恶意输入破坏 SQL 语法。
Python sqlite3 库支持通过 ? 进行参数化查询。占位符。您可以将值作为与查询中的占位符相对应的值元组传递给执行方法。
修订的代码:
这里是您的使用参数化查询的 setLabel 方法:
def setLabel( self, userId, refId, label ): self._db.cursor().execute( """ UPDATE items SET label = ? WHERE userId = ? AND refId = ?""", (label, userId, refId) ) self._db.commit()
通过使用参数化查询,您可以确保用户输入是被视为一个值而不是SQL语句的一部分,有效防止SQL注入攻击。
以上是参数化查询如何防止 Python 的 SQLite 交互中的 SQL 注入?的详细内容。更多信息请关注PHP中文网其他相关文章!