Per evitare questo sql injection devo per forza evitare che gli utenti inseriscano caratteri tipo ; * ' oppure ci sono altri modi?
Per evitare questo sql injection devo per forza evitare che gli utenti inseriscano caratteri tipo ; * ' oppure ci sono altri modi?
L'idea di fondo è che devi controllare TUTTI gli input manipolabili dall'utente:
http://freephp.html.it/articoli/view...olo.asp?id=123
Tutti hanno bisogno di credere in qualcosa.
Io credo che mi farò un'altra birra.
Ok, ma se in un campo devo potere fare inserire anche dei caratteri potenzialmente dannosi come posso fare?
usi le apposite funzioni di escape, ad esempio mysql_real_escape_string()
Tutti hanno bisogno di credere in qualcosa.
Io credo che mi farò un'altra birra.
ma allora non basta far passare ogni parametro attraverso questa funzione?
dipende da come è costruita la query, dalla presenza di magic_quotes_gpc, dal tipo di dato che vuoi filtrare, ...
nell'articolo sono presentati alcuni esempi, e non sempre una funzione di escape è sufficiente, anche perche ad esempio i caratteri % e _ non vengono filtrati da mysql_real_escape_string o mysql_escape_string, pur essendo caratteri che assumono un senso quando c'è una clausula LIKE nella query.
inoltre tieni presente che non controllare gli input può portare ad altri problemi, piu o meno gravi, che esulano dalla sql injection (es: tag html in un campo di testo, indirizzi email non validi, ecc.ecc.)
Tutti hanno bisogno di credere in qualcosa.
Io credo che mi farò un'altra birra.
ok, ti ringrazio molto.
Ciao
Puoi fare una semplice regexp per accettare soltanto lettere e cifre.
a quale scopo far partire l'engine delle pcre solo per far questo? quando semplicemente lanciando un'escape risolvi in buona parte il problema?Originariamente inviato da badaze
Puoi fare una semplice regexp per accettare soltanto lettere e cifre.
VM su SSD da 5$! https://www.digitalocean.com/?refcode=f6925c7f0ddb
A proposito, qualcuno sa come farlo in JavaScript?Originariamente inviato da badaze
Puoi fare una semplice regexp per accettare soltanto lettere e cifre.