Condividi
Quali caratteri mettere con escape quando si fa una query sql?
Quando eseguo una query SQL ho la necessità di ripulire la stringa d'interrogazione da caratteri speciali che potrebbero portare problemi all'istruzione o peggio fare dei seri danni se usati appositamente da utenti male intenzionati (come accade con la SQL injection), io adopero una funzione che inserisce l'escape backslash per i seguenti caratteri:
- - Sostituisce \ con il doppio \\
- - Sostituisce il singolo apice ' con \'
Questo è abbastanza per prevenire query malevoli? Ci sono funzioni di libreria apposite che fanno questo?
In Corso
3
MySql
24-05-2018
3 Risposte
4205 Visite
0
Risposte ( 3 approvate )
Il modo migliore in PHP per gestire l'inserimento di una stringa all'interno di un database MySql ed evitare spiacevoli inconvenienti (o peggio) è far uso di questa comprovata funzioncina
Il codice è di facile lettura, se le "magic quotes" sono attive (impostate ad on) allora alla stringa viene applicata la funzione stripslashes (la contraria di addslashes), se non lo sono ed il valore non è numerico applica la mysql_real_escape_string che inserisce gli Escape nei caratteri opportuni.
I caratteri potenzialmente dannosi in una query sql non si limitano ai pochi che hai elencato, ed è meglio far fare questo lavoro ad apposite funzioni di libreria che trattano in maniera opportuna la quasi totalità dei casi, ad es. in PHP trovi
Altri potenziali caratteri dannosi nell'inserimento di stringhe nel database, spesso usati per fare sql injection sono il punto e virgola ";" ed i commenti sql "--" e "/* ... */"
Quindi fai attenzione anche a questi e trattali opportunamente come sequenze di escape anteponendogli lo backslash "\"