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 の Web サイトで便利なリファレンスを入手できます。

また、SQL インジェクションの例と、問題を軽減する方法を示しているこのパワーポイント リファレンスで値を見つけることもできます。

于 2013-03-11T00:44:43.327 に答える