如何在python mysql中的CREATE查询中防止注入攻击

时间:2013-10-19 03:32:13

标签: python mysql sql-injection

我知道在使用python模块MySQLdb的SELECT或INSERT查询中避免注入攻击的正确方法是:

cursor.execute("SELECT spam, eggs, sausage FROM breakfast WHERE price < %s", (max_price,))

但是,当我尝试在CREATE查询中应用相同的规则时,它会返回错误。我的代码:

cursor.execute("CREATE DATABASE %s;", ("test",))

报告语法错误:

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test'' at line 1")

这似乎是因为查询在数据库名称中添加了单引号而Mysql在CREATE查询中不允许这样做?

那么,如果db名称或表名不固定,那么使用python MySQLdb模块创建数据库或表的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

尝试方括号;

cursor.execute("CREATE DATABASE %s;", ["test"])