Dove e perchéOriginariamente inviato da distratto
Ho letto che bisognerebbe fare l’escape anche dei caratteri % e _.
Dove e perchéOriginariamente inviato da distratto
Ho letto che bisognerebbe fare l’escape anche dei caratteri % e _.
l'ho letto sulla guida alla sicurezza in php di php.html.it:
http://php.html.it/guide/lezione/298...sql-injection/
Dice questo:
E' una preoccupazione eccessiva?Nota: mysql_escape_string() non aggiunge le sequenze di escape a " % " ed a " _ ".
Tale funzione (come addslashes) non fa l'escape di tutti i caratteri potenzialmente pericolosi, quali " % ", usati nelle query con LIKE, " ; " e " , ". Per questi è necessario uno str_replace "manuale".
Innanzitutto, l'articolo si riferisce alle query in lettura, non a quelle di scrittura.
In secondo luogo sì, la trovo una preoccupazione eccessiva. E' vero che quei caratteri possono essere potenzialmente pericolosi, ma solo se non si prendono le misure di sicurezza appropriate in altra sede (verifica sul tipo di dati, escape ecc.).
Fare l'escape su una virgola o su un punto e virgola, lo dico così su due piedi, mi sembra un'assurdità. L'escape sul '%' invece è necessario se devi cercare proprio quel carattere in una query che usa LIKE.
Meno male, un problema in meno.
Allora userò mysqli_real_escape_string() da sola.
Grazie.
Ciao,
io invece ho il problema inverso .. cioè se devo fare una modifica di un campo, stampo il valore letto nel database all'interno di un INPUT. Qui emerge il problema: infatti, siccome nel DB i dati vengono salvati senza le \ davanti agli apici, quando vado a visualizzare il contenuto all'interno di un input, il testo viene troncato perchè gli apici li interpreta come chiusa stringa.
Es:
$testo = 'testo testo "testo tra apici" altro testo';
<input type="text" value="<?php printf("%s", $testo) ?>" />
nel database viene scritto correttamente senza i caratteri di escape.
Sapreste come risolvere il problema ??
http://www.andreacozzi.net/
Ho lo stesso problema !
allora GURU (luca200) mi salvi ?!
In insert ho fatto tutto per benino leggendo la tua pillola !
Adesso che devo richiamare il valore all'interno di un campo di input per dare la possibilità dell'update mi tronca i volori che contengono gli apici singoli, nel db è salvato ovviamente senza \
come si fa?![]()
Originariamente inviato da dr_jack86
io invece ho il problema inverso .. cioè se devo fare una modifica di un campo, stampo il valore letto nel database all'interno di un INPUT. Qui emerge il problema: infatti, siccome nel DB i dati vengono salvati senza le \ davanti agli apici, quando vado a visualizzare il contenuto all'interno di un input, il testo viene troncato perchè gli apici li interpreta come chiusa stringa.
Mi rispondo da solo
Non so se è la soluzione più corretta, cmq funziona
Codice PHP:$valore=ereg_replace("'", "' ", $row['valore']);
![]()
.
Per l'output su browser esiste la funzione htmlspecialchars()
Scusate, la domanda che magari è niubba...
Ma se a tutti gli accenti si sostituisce il valore "& acute ;"anzichè fare l'escape, non è meglio?![]()
"Con la forza della verità, in vita, ho conquistato l'universo"
Avrebbe senso se stessimo parlando di una pagina html. Ma siccome stiamo parlando di salvare dati su un database, è una boiata.Originariamente inviato da hairac
Scusate, la domanda che magari è niubba...
Ma se a tutti gli accenti si sostituisce il valore "& acute ;"anzichè fare l'escape, non è meglio?![]()