首页 >后端开发 >Python教程 >如何安全地在 MySQL IN 子句中使用列表来防止 SQL 注入?

如何安全地在 MySQL IN 子句中使用列表来防止 SQL 注入?

Barbara Streisand
Barbara Streisand原创
2024-11-25 20:47:14952浏览

How to Safely Use Lists in MySQL IN Clauses to Prevent SQL Injection?

MySQL IN 子句的安全内爆列表

数据库安全至关重要,避免 SQL 注入至关重要。在 MySQL IN 子句中使用值列表时,必须安全地这样做。

问题:

将列表扩展为字符串以在字符串中使用IN 子句容易受到 SQL 的影响

# Vulnerable
cursor.execute("DELETE FROM foo.bar WHERE baz IN ('%s')" % foostring)

解决方案:

为了防止 SQL 注入,直接使用值列表作为参数:

# Safe
format_strings = ','.join(['%s'] * len(list_of_ids))
cursor.execute("DELETE FROM foo.bar WHERE baz IN (%s)" % format_strings, tuple(list_of_ids))

这个方法将值列表作为参数传递,而不是将它们嵌入到查询字符串中,有效防止注入

通过直接将数据作为参数传递给 MySQL 驱动程序,您无需手动引用和转义,从而确保数据库操作的完整性。

以上是如何安全地在 MySQL IN 子句中使用列表来防止 SQL 注入?的详细内容。更多信息请关注PHP中文网其他相关文章!

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