我刚刚发现我使用_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语法错误。
答案 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)
。
答案 1 :(得分:2)
可通过the bobby tables website获得一个非常方便的参考。
您还可以在In this powerpoint reference中找到值,其中显示了一些sql注入示例以及缓解该问题的可能方法。