Joomla.it Forum

Non solo Joomla... => Sviluppo => : tampe125 23 Sep 2010, 11:02:13

: [RISOLTO] Sviluppare in sicurezza
: tampe125 23 Sep 2010, 11:02:13
visto l'articolo che è uscito oggi, mi rivolgo a chi è più esperto di me:

quali sono le linee guida per sviluppare in sicurezza e diminuire le possibilità di venire bucati?

parlo proprio a livello di codice, è sufficiente utilizzare JRequest oppure serve qualcosa in più?
il metodo JRequest::getVar è utilizzabile oppure è troppo vulnerabile?

grazie a tutti quanti
: Re:Sviluppare in sicurezza
: mau_develop 23 Sep 2010, 12:25:04
no, il principio non è di usare getWord o getVar, diciamo che usare l'uno o l'altro metodo della classe statica può non dipendere solo da unaspetto di sicurezza.

Il problema è un'altro sono i dati che vanno a valorizzare variabili, dopo essere passati da un post una get una sessione un cookie da una richiesta Json etc

in fondo getWord fa qualcosina in più di una getVar è intuitivo che presuppone un'aspettativa... una word
...ma potrei benissimo prenderla da una get var e dirglielo io che deve essere una word.

Casting, la base delle sicurezza è prima di tutto il casting.
mi aspetto un numero e devo verificare che quello arrivi tutto il resto andrà nell'errore da gestire.

non è la getVar in se stessa quindi il problema ma sei tu che prendi ciò che arriva e lo assegni a qualche variabile.
Se la variabile finisce in una query ecco la sqlinj se la variabile va a valorizzare..chessò ..uno stile, hai una Xss, se va a valorizzare qualche include hai una rfi (aggiungi davanti a tutto "...possibile..", perchè nn è comunque detto).

se faccio Jrequest getvar controller il mio controller potrebbe essere una stringa "malevola".... ma se io appena dopo gli metto un controllo tipo  if(in_array(array('pippo','pluto','paperino'), $miocontroller)){

tu li porcherie non riuscirai mai a metterle.

M.
: Re:Sviluppare in sicurezza
: tampe125 23 Sep 2010, 12:46:53
ottimo, però ci sono dei punti in cui non posso esattamente sapere che cosa mi arriva.

esempio: calcolo del codice fiscale.
io devo prendere il nome + il cognome.
e di nomi strani ce ne sono, non posso eliminare gli spazi, nè le virgolette ecc ecc.

che faccio in questo caso?
praticamente mi tocca accettare tutto, ma equivale ad aprire la porta...

ovviamente questo è il primo esempio che mi è venuto in mente, ma credo di aver reso l'idea
: Re:Sviluppare in sicurezza
: mau_develop 23 Sep 2010, 13:36:26
e di nomi strani ce ne sono, non posso eliminare gli spazi, nè le virgolette ecc ecc.
che faccio in questo caso?
praticamente mi tocca accettare tutto, ma equivale ad aprire la porta...
------------------------------------------------------------------------------------------------

mmmhhh un po' troppo superficiale così, se ci pensi non è vero:
- un nome ha una lunghezza massima... mai visti nomi di 40 char ad esempio
- un nome non avrà mai dei numeri a meno che non si iscriva Benedetto 2
- un nome può avere un apostrofo, non due
- se uno si chiama di nome UNION e di cognome SELECT credo abbia difficoltà ad iscriversi un po' dappertutto

... ma per non farsi troppe seghe mentali php ha pensato ad una bella funzione che si chiama htmlspecialchars();

tutti i tuoi caratteri strani verranno convertiti e il codice iniettato non avrà più effetto senza tag

M.
: Re:Sviluppare in sicurezza
: mmleoni 23 Sep 2010, 21:19:20
o meglio ancora usare mysql_real_escape_string(), ovverlo le funzioni specifiche di encoding fornite dalla libreria del db, sicuramente più sicure di quelle php base.

la capacità di scrivere codice sicuro deriva dal livello di conoscenza acquisito riguardo ciascun elemento del sistema: rete e protocolli, server e filesystem, webserver e parsing degli url, linguaggio e funzionamento interno, DB, et cetera.

l'unica guida per scrivere codice sicuro recita solo: non smettere mai di pensare né di studiare.

se non conosci come funziona ogni singolo elemento scrivere codice sicuro è una illusione: un programmatore senior sa che il suo codice può non essere sicuro, gli altri sono tutti convinti che lo sia  :( :(

... buono studio.

ciao,
marco
: Re:Sviluppare in sicurezza
: mau_develop 23 Sep 2010, 21:42:45
non smettere mai di pensare né di studiare.
.....
se non conosci come funziona ogni singolo elemento scrivere codice sicuro è una illusione

 :D

M.
: Re:Sviluppare in sicurezza
: tampe125 27 Sep 2010, 13:51:57
l'unica guida per scrivere codice sicuro recita solo: non smettere mai di pensare né di studiare.

eheh questo me ne sono accorto..
la mia "biblioteca" di manuali si sta allargando a vista d'occhio :D