使用_mysql修复SQL注入

时间:2013-03-11 00:37:06

标签: python mysql sql flask sql-injection

我刚刚发现我使用_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 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

可通过the bobby tables website获得一个非常方便的参考。

您还可以在In this powerpoint reference中找到值,其中显示了一些sql注入示例以及缓解该问题的可能方法。