ALP - Aquileia Linux Project
http://forum.alproject.org/

Scrivere codice sicuro (o almeno provarci)
http://forum.alproject.org/viewtopic.php?f=14&t=995
Pagina 1 di 2

Autore:  KINGHack [ 25/09/2007, 8:58 ]
Oggetto del messaggio:  Scrivere codice sicuro (o almeno provarci)

Mi è scattato questo pallino da alcuni giorni.
Premetto che sono alle prime armi col PHP e mi ci vuole ancora il manuale sotto mano per scrivere codice ed è per questo che sono arrivato al punto di chiedermi:

Situazione:
- ho creato il mio modulo contatti su una paginetta del mio sito;
- il form si interfaccia con un db su MySQL;
- tutti i cmapi compilati manderanno i dati al database;
Esempio campi: nome, cognome, mail, sito web

Problema:
Qualcuno potrebbe inserire codice arbitrario nei campi per inserire qualcosa che potrebbe danneggiare e rendere instabile il server, il database stesso... come fare per rendere sicuro il form e di conseguenza mettere in sicurezza l' archivio dati e il server?

Mia proposta:
Verificare quali campi ci sono nel form e che dati raccolgono:
Nome: deve contenere solo lettere
Cognome: deve contenere solo lettere
Email: deve essere in forma qualcosa[chiocciola]dominio.estensione
Sito web: deve essere dato in forma http://qualcosa.dominio.estensione (con questo form si accettano solo domini id secondo/terzo livello e non URL a sotto pagine)

Una volta che ho capito la forma con cui devo fornire i dati per i singoli campi, quindi restringendo il range e filtrarli, posso anche procedere per mettere le condizioni una ad una.
IF:
1) se Nome e Cognome sono ugauali solo a lettere = ok passa alla condizione successiva se no stoppati;
2) se sul campo Mail trovi la forma su detta continua con la condizione successiva se no stoppati;
3) se sul campo Sito web trovi la sintassi come sopra indicato ultima l' inserimento dei dati forniti nel db 4) se no stoppati e dai l' errore all' utente di verificare che dati ha fornito;

Vengo al dunque finalmente:
qualcuno mi da delucidazioni su come codare in php le condizioni che ho indicato un attimo fa magari per punti 1,2,3,4? :)

Autore:  virgilio [ 25/09/2007, 12:38 ]
Oggetto del messaggio: 

Ciao King forse non ho ben afferrato il tuo problema ma non ti basta usare la funzione htmlspecialchar
così anche un pinco qualunque se accidentalmente inserisce del codice html non crea danni....

Autore:  KINGHack [ 25/09/2007, 13:36 ]
Oggetto del messaggio: 

Quella funzione a quanto ho capito converte i caratteri speciali.
Il problema che ho esposto io è diverso ovvero faccio un esempio:

mettiamo cont che un utente smaliziato possa inserire nel campo Mail codice arbitrario ovvero al posto di una stringa che ha come sintassi qualchecosa@qualchecosa.qualchecosa_max_3_caratteri può inserire una stringa nulla o peggio ancora una stringa con codice malevolo, un qualche dato che possa venire accodato tramite un array e far partire un comando specifico.

La semplice conversione con la funzione di cui accennavi non darà esito positivo per la messa in sicurezza imho.

Io vedo meglio una condizione per il campo Mail che dica:

se e solo se la stringa passata ha la sintassi bla_bla(chiocciola)bla(punto)qualchecosa_max_3_caratteri allora i dati verranno inseriti se no dai un avviso di errore e stoppa l' insrimento nel db.

Così anche se la mail non è verificata e non si sa se sia esistente, ma almeno sappiamo che l' utente X non può passare una stringa differente (per es nulla, con punteggiatura strana, ...)

Stesso discorso imho vale pure per gli altri campi.
Trovare una sistassi, uno standard con cui permettere di inserire i dati e poi verificarli con condizioni campo per campo.

Ribadisco la mia domand: praticamente che funzioni php dovrei utilizzare per inserire tali condizioni sui vari campi?

Autore:  KINGHack [ 25/09/2007, 13:38 ]
Oggetto del messaggio: 

Aggiungo a parte che secondo me, oltre alla buona identazione del codice, la pulizia dello stesso dobbiamo focalizzare anche la programmazione sul fatto sicurezza sia per l'esempio che ho fatto ma anche in generale e quindi dovrebbe essere un qualcosa di scontato pensarci.

Autore:  stabi [ 26/09/2007, 12:46 ]
Oggetto del messaggio: 

quello che ti serve è una giuda alla prevenzione delle SQL INJECTION
su html.it ce nè almeno una.

anche perchè la come fermi una roba di questo tipo così?
Codice:
"1';delete from tebella_CMS where 1=1--mm@ciao.boh"

Autore:  KINGHack [ 27/09/2007, 11:58 ]
Oggetto del messaggio: 

Mmmm già.

A proposito del tuo suggerimento ho trovato questa guida su HTML.it
http://php.html.it/articoli/leggi/896/p ... injection/

Davvero interessante ;)

Autore:  stabi [ 27/09/2007, 14:22 ]
Oggetto del messaggio: 

si l'avevo trovata anche io, interessante ..
in rete in sembra che si trova molta roba sull'argomento.

Autore:  jumpingfrog [ 27/09/2007, 15:36 ]
Oggetto del messaggio: 

Ciao a tutti,
mi sono appena registrato e ho visto il post sulla sicurezza. Beh io non sono un programmatore professionista ma il mio avviso è di dare un'occhiata al sito dell'OWASP(Open Web Application Security Project ) dove si possono trarre utili suggerimenti per la sicurezza in ambiente web.

@KH: Ti giro via mp un doc sull'Open Web Application Security Project perchè non so come fare a caricarlo nel forum.

Ciao

JF

Autore:  KINGHack [ 27/09/2007, 16:30 ]
Oggetto del messaggio: 

Oi jumpingfrog!!! Chi si rivede :mrgreen:

Grazie per la segnalazione. Per dovere di cornaca aggiungo pure il link al sito che hai segnalato:
http://www.owasp.org/index.php/Main_Page

Autore:  jumpingfrog [ 28/09/2007, 8:14 ]
Oggetto del messaggio: 

Spero che possa essere utile per voi programmatori. Vi posto anche un'altro sito interessante per la security che è OT per quanto riguarda la programmazione ma che secondo me è un punto di riferimento per capire che cosa può essere attaccato:
http://www.securityfocus.com/vulnerabilities
Su questo sito potete trovare le vulnerabilità dei vari prodotti suddivisi per vendor. E' costantemente aggiornato e penso che fare un'applicazione web quanto più sicura possibile è utile combinare sia la programmazione sicura sia effetture le patch dei vari prodotti tenendo presente sempre che le vulnerabilità vengono scoperte di giorno in giorno.

Ola

JF

Pagina 1 di 2 Tutti gli orari sono UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/