首页 > 数据库 > mysql教程 > 如何在 Python 的 `MySQLdb` 中安全地使用 SQL 通配符以避免注入?

如何在 Python 的 `MySQLdb` 中安全地使用 SQL 通配符以避免注入?

Mary-Kate Olsen
发布: 2024-12-21 03:31:08
原创
797 人浏览过

How to Safely Use SQL Wildcards with Python's `MySQLdb` to Avoid Injection?

在 Python 字符串格式中使用 SQL 通配符和 LIKE 运算符

将 SQL 通配符和 LIKE 运算符插入 Python 字符串格式可能具有挑战性。本文提供了尝试使用 MySQLdb 执行 MySQL 查询时遇到的常见错误的解决方案。

来自 MySQLdb 的错误

尝试 3 和 4 从 MySQLdb 返回错误,指示“格式字符串参数不足。”出现这种情况是因为 Python 中的字符串格式化运算符将 % 符号解释为格式说明符。

SQL 注入漏洞

显示的前四次尝试容易受到攻击SQL注入攻击。应对用户输入(例如查询变量)进行清理或转义,以防止执行恶意 SQL。

正确方法

建议的方法是使用占位符而不是字符串格式。下面是一个示例:

curs.execute("""SELECT tag.userId, count(user.id) as totalRows 
                  FROM user 
            INNER JOIN tag ON user.id = tag.userId 
                 WHERE user.username LIKE %s""", ('%' + query + '%',))
登录后复制

两个参数传递给execute():

  • 带有占位符的 SQL 语句,用于插入通配符。
  • 一个元组包含带有通配符的清理查询值。

此方法确保 SQL语句有效并且可以防止 SQL 注入。

以上是如何在 Python 的 `MySQLdb` 中安全地使用 SQL 通配符以避免注入?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板