首页 >数据库 >mysql教程 >参数化查询如何防止 Python 的 SQLite 交互中的 SQL 注入?

参数化查询如何防止 Python 的 SQLite 交互中的 SQL 注入?

Barbara Streisand
Barbara Streisand原创
2025-01-05 00:17:40559浏览

How Can Parameterized Queries Prevent SQL Injection in Python's SQLite Interactions?

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn