Back to top

Autore Topic: [RISOLTO] Sviluppare in sicurezza  (Letto 1473 volte)

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
[RISOLTO] Sviluppare in sicurezza
« il: 23 Set 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
« Ultima modifica: 30 Set 2010, 10:03:26 da tampe125 »
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

mau_develop

  • Visitatore
Re:Sviluppare in sicurezza
« Risposta #1 il: 23 Set 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.

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:Sviluppare in sicurezza
« Risposta #2 il: 23 Set 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
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

mau_develop

  • Visitatore
Re:Sviluppare in sicurezza
« Risposta #3 il: 23 Set 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.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Sviluppare in sicurezza
« Risposta #4 il: 23 Set 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
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

mau_develop

  • Visitatore
Re:Sviluppare in sicurezza
« Risposta #5 il: 23 Set 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.

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:Sviluppare in sicurezza
« Risposta #6 il: 27 Set 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
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

 



Web Design Bolzano Kreatif