用_mysql修复SQL注入

0 投票
2 回答
1197 浏览
提问于 2025-04-17 18:38

我刚发现我使用 _mysql 的方式导致了一个严重的 SQL 注入问题。

我现在的代码是这样的:

db = _mysql.connect('', 'user', 'pass', 'db')
query = """SELECT * FROM stuff WHERE thing="{0}" """.format(user_input)
cur.query(query)

我哪里做错了,怎样才能修复它,让它变得安全呢?

我试过用 _mysql.escape_string(),但还是出现了 SQL 语法错误。

2 个回答

2

你可以通过bobby tables网站找到一个很实用的参考资料。

另外,你也可以看看这个PowerPoint资料,里面展示了一些SQL注入的例子,以及一些可能的解决方法。

2

你可以单独使用 MySQLdb

conn = MySQLdb.connect();
curs = conn.cursor();
curs.execute("SELECT * FROM stuff WHERE thing = %s", (user_input));

如果你想继续使用 _mysql,可以用 db.escape_string(user_input) 来处理用户输入。

文档链接:http://mysql-python.sourceforge.net/MySQLdb.html

撰写回答