Sto costruendo una classe di database e ho pensato che sarebbe una buona idea incorporare una qualche forma di prevenzione dell'iniezione SQL (duh!). Ecco il metodo che esegue una query di database:Prevenzione dell'iniezione SQL in una classe di database
class DB
{
var $db_host = 'localhost';
var $db_user = 'root';
var $db_passwd = '';
var $db_name = 'whatever';
function query($sql)
{
$this->result = mysql_query($sql, $this->link);
if(!$this->result)
{
$this->error(mysql_error());
} else {
return $this->result;
}
}
}
C'è di più nella classe di quello ma sto tagliando verso il basso solo per questo. Il problema che sto affrontando è che se utilizzo semplicemente lo mysql_real_escape_string($sql, $this->link);
, esso sfugge all'intera query e porta a un errore di sintassi SQL. Come posso trovare dinamicamente le variabili che devono essere sfuggite? Voglio evitare di usare mysql_real_escape_string()
nei miei blocchi di codice principale, preferisco averlo in una funzione.
Grazie.
So che ho detto questo sul tuo post precedente, ma fammi ripetere: Usa PDO. Se usi PDO con le sue istruzioni preparate, non devi nemmeno preoccuparti di sfuggirle. – ryeguy
Utilizzare i parametri parametrizzati, utilizzare o adodb o pdo. – rook