我刚刚发现我使用_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语法错误。
发布于 2013-03-11 08:42:21
您可以单独使用MySQLdb:
conn = MySQLdb.connect();
curs = conn.cursor();
curs.execute("SELECT * FROM stuff WHERE thing = %s", (user_input));如果你想坚持使用_mysql,那就使用db.escape_string(user_input)。
发布于 2013-03-11 08:44:43
在the bobby tables website上有一个很好用的参考资料。
您还可以在In this powerpoint reference中找到价值,它显示了sql注入的一些示例以及缓解该问题的可能方法。
https://stackoverflow.com/questions/15329531
复制相似问题