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

Sql interroga le variabili associandole rispetto a specificarle

Sebbene tu possa avere la tua query perfettamente sicura senza vincolare (formattando tutte le variabili manualmente), l'uso di istruzioni preparate per rappresentare i tuoi dati nella query è davvero l'unico modo corretto.

L'importanza dell'utilizzo di dichiarazioni preparate è spesso giudicata erroneamente, quindi vorrei chiarire i reali vantaggi:

  • L'istruzione preparata rende la formattazione (o la gestione) corretta inevitabile .
  • l'istruzione preparata esegue la formattazione (o la gestione) corretta nell'unico posto corretto - subito prima dell'esecuzione della query, non da qualche altra parte, quindi la nostra sicurezza non si baserà su fonti inaffidabili come
    • qualche caratteristica 'magica' di PHP che rovina i dati piuttosto che renderli sicuri.
    • buona volontà di uno (o più) programmatori, che possono decidere di formattare (o non formattare) la nostra variabile da qualche parte nel flusso del programma. Questo è il punto di grande importanza.
  • L'istruzione preparata influisce sul valore stesso che sta entrando nella query, ma non sulla variabile sorgente, che rimane intatta e può essere utilizzata nell'ulteriore codice (da inviare via e-mail o mostrata sullo schermo).
  • L'istruzione preparata può ridurre notevolmente il codice dell'applicazione, eseguendo tutta la formattazione dietro le quinte (*solo se il driver lo consente).