0

我刚刚发现我使用 _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 语法错误。

4

2 回答 2

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

于 2013-03-11T00:42:20.943 回答
2

可以通过bobby tables 网站获得一个很好的方便参考。

您还可以在此 powerpoint 参考中找到价值,该参考显示了一些 sql 注入示例以及缓解问题的可能方法。

于 2013-03-11T00:44:43.327 回答