インジェクションを回避するには、execute
を使用します %s
を使用 各変数の代わりに、execute
の2番目のパラメーターとしてリストまたはタプルを介して値を渡します。 。これは、ドキュメントの例
です。 :
c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""", (max_price,))
これはカンマを使用していることに注意してください 、%ではありません (これは直接の文字列置換であり、エスケープされません)。 これを行わないでください :
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""" % (max_price,))
さらに、位置ホルダーの前後に一重引用符を使用しないでください('%s'
)ドライバがこれらを提供するときにパラメータが文字列である場合。