用_mysql修复SQL注入
我刚发现我使用 _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)
来处理用户输入。