Mysql
 sql >> Database >  >> RDS >> Mysql

Query parametriche MySQL

Fai attenzione all'uso dell'interpolazione delle stringhe per le query SQL, poiché non sfuggirà correttamente ai parametri di input e lascerà l'applicazione aperta alle vulnerabilità di SQL injection. La differenza potrebbe sembrare banale, ma in realtà è enorme .

Errore (con problemi di sicurezza)

c.execute("SELECT * FROM foo WHERE bar = %s AND baz = %s" % (param1, param2))

Corretto (con escape)

c.execute("SELECT * FROM foo WHERE bar = %s AND baz = %s", (param1, param2))

Si aggiunge alla confusione che i modificatori utilizzati per associare i parametri in un'istruzione SQL variano tra le diverse implementazioni dell'API DB e che la libreria client mysql utilizza printf sintassi dello stile invece del più comunemente accettato '?' marker (usato ad es. da python-sqlite ).