- Home
- Categorie
- Coding e Sistemistica
- PHP
- Evitare sicuramente una SQL Injection
-
Evitare sicuramente una SQL Injection
Per l'abbinamento PHP/MYSQL come posso evitare una SQL Injection?
Mi è sufficiente cambiare i caratteri ' e " con a e b?Creiamo un bel post su questo delicato argomento?
-
Ho appena trovato questa pillola:
E' molto semplice evitare attacchi sql Injection occorre infatti solo un po' di attenzione da parte dello sviluppatore in tutte le implementazioni di codice che acquisiscono dati dall'esterno quei dati che possono essere manipolati dagli utenti.
Praticamente occorre filtrare prima di passare i dati al database i caratteri
; -- + ' ( ) = > < @
Per una maggiore protezione è opportuno filtrare anche alcune parole riservate di sql
SELECT, INSERT, CREATE, DELETE, FROM, WHERE, OR, AND, LIKE, EXEC, SP_, XP_, SQL, ROWSET, OPEN, BEGIN, END, DECLARE
E' assolutamente sufficiente fare questo?
-
nì. è un passo avanti di certo.
io son un convinto sostenitore del casting delle variabili (se ti aspetti un dato numerico, controlla che lo sia, se ti aspetti un boleano, se devi registrare solo il codice fiscale, controlla, con una regexp, che ci siano solo quei caratteri ammessi e che siano disposti in un certo modo.
esistono poi delle funzioni ad hoc, mysql_escape_string(), per dirne una, che tolgono di torno un sacco di problemi.
-
Ciao,
secondo me questo articolo fa al caso tuo
-
e in un portale o in un gestionale dove ci sono centianaia di campi come fai a gestire il tutto? per ogni campo un controllo specifico?
-
Allora io vorrei essere al sicuro per una paginazione.
Metterò il codice che mi trasforma gli apici in "poi per il numero delle pagine controllerò che arrivino dei numeri.
per scegliere in base a cosa ordinare mi è venuta questa idea. io nell'url mi faccio passare dei numeri e poi metto degli if:
IF ($tipopag == 1) {allora $orberby = titolo}
e così via.
Per sceglere se ASC oppure DESC applico lo stesso ragionamento,
se mi passo 1 metto la variabile $var =ASC altrimenti la metto come DESC.In questo modo faccio il controllo che arrivino tre variabili numeriche...
SONO SICURO DI EVITARE INJECTION operando in questo modo?
-
@massy said:
nì. è un passo avanti di certo.
io son un convinto sostenitore del casting delle variabili (se ti aspetti un dato numerico, controlla che lo sia, se ti aspetti un boleano, se devi registrare solo il codice fiscale, controlla, con una regexp, che ci siano solo quei caratteri ammessi e che siano disposti in un certo modo.
Il solo casting delle variabili è sufficiente?
-
il casting della variabile page che deve essere numerica non mi funziona se uso in carattere #
se metto ?page=90#
mi carica la pagina 90 senza dirmi parametro non valido
se scrivo?page=9#0
mi carica la pagina 9 senza dirmi parametro non valido!Come posso fare?
-
@fabioski said:
il casting della variabile page che deve essere numerica non mi funziona se uso in carattere #
se metto ?page=90#
mi carica la pagina 90 senza dirmi parametro non valido
se scrivo?page=9#0
mi carica la pagina 9 senza dirmi parametro non valido!Come posso fare?
Ciao, il simbolo # negli url precede un'ancora: la parte successiva al simbolo # non fa parte dei parametri