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

bind_param() necessario solo sui valori inseriti dall'utente o tutti?

Tecnicamente non sei a rischio se non prepari dati che non provengono dall'input dell'utente. Tuttavia, si consiglia vivamente di farlo per un paio di motivi:

  1. Se dimentichi di preparare i dati di input dell'utente da qualche parte, c'è la possibilità che questo utente abbia iniettato qualcosa di vario in una riga di dati che non ti aspettavi fosse mai stato immesso dall'utente.
  2. È buona norma ripetere ciò che stai facendo per mantenere sicuro il tuo server. Se inizi a confondere, è molto più probabile che dimentichi di preparare i dati dove è effettivamente necessario.
  3. La preparazione dei dati non serve solo a prevenire l'iniezione SQL da parte di aggressori. Preverrà anche alcuni problemi di database nel caso in cui crei accidentalmente un bug nel tuo codice. Ad esempio:

Da qualche parte nel tuo codice hai un sistema di log che aggiunge un log degli errori al tuo database. La stringa sarebbe:


Questa stringa è generata dal tuo script. Perciò non lo prepari. Tuttavia le virgolette all'interno di questa stringa causeranno errori con il tuo database che avrebbero potuto essere evitati se lo avessi preparato comunque.