Il design della mysql_query
funzione è tale che devi stare attento a sfuggire a ogni singolo bit di dati che stai iniettando in esso, e se ne perdi anche uno, l'intera applicazione può essere distrutta da un strumento automatico di exploit della vulnerabilità SQL
.
Entrambi mysqli
e i segnaposto di supporto PDO che sono richiesti per garantire che le tue query siano al sicuro dai bug di SQL injection. Chiamando mysql_real_escape_string
su tutto non è solo noioso, ma soggetto a errori, ed è qui che sorgono i problemi.
Il mysql
le funzioni sono un prodotto degli albori di PHP e sono significativamente più limitate delle nuove funzionalità orientate agli oggetti offerte da entrambi mysqli
come opzione, o DOP by design.
Ci sono una serie di ottime ragioni per usare una di queste due nuove interfacce, ma la più importante è che mysql_query
la funzione è semplicemente troppo pericolosa per essere utilizzata nel codice di produzione. Con esso sarai sempre a un errore di distanza da alcuni problemi molto seri.
C'è un motivo per cui continuano a comparire strappi di database pieni di password e numeri di carte di credito. Avere un punto di iniezione SQL ovvio rende quasi troppo facile prendere completamente il controllo di un sito.