Per quanto riguarda il execute($input_parameters)
come un numero di passi separati bindParam/bindValue/execute
, la risposta sembra essere fondamentalmente, sì.
Tuttavia, potrebbe essere necessario adottare ulteriori misure a seconda di come è stata costruita la stringa di query passata alla chiamata PDO::prepare
. Non è sempre possibile parametrizzare tutto nella stringa di query preparata. Ad esempio, non è possibile utilizzare un parametro per un nome di tabella o colonna. Se si autorizzano dati utente o dati esterni in quella stringa di query, è necessario disinfettare i dati prima di passare la stringa a prepare
. Fare riferimento a queste domande StackOverflow per maggiori dettagli:
In generale si dovrebbe essere il filtraggio di tutti i dati di input in ogni caso, quindi, se si voleva avere una maggiore sicurezza si può sterilizzare qualsiasi immetti dati destinati a materiale di tipo SQL utilizzando i filtri appropriati per le tue esigenze o scrivendo anche una funzione personalizzata FILTER_CALLBACK se lo desideri. Nel caso di nomi di tabelle o colonne provenienti da dati forniti dall'utente, una tecnica di convalida comune consiste nel controllare i valori rispetto agli array di nomi consentiti.
Spero che questo aiuti. In bocca al lupo. Rimanga sicuro! ;)