These several weeks have been rather fast paced. Even though I can’t dedicate enough time on my project I’ve developed some thoughts on it. I still like my filter based controller, what I think I did wrong is that at the current moment I use my DAO’s directly in the Actions. This is fundamentally wrong even though it gets the work done and is ok for this first phase of development. I intend to wrap these things in the Managers and stop using DAO’s and DAO factories directly in that layer. Next change I plan to implement is a validation framework. I would like to use the annotations in the Java5 platform to acomplish this. Spring and OR via Hibernate comes right after 🙂
Archive for July, 2005
Web architecture and jspArt
Wednesday, July 13th, 2005Top Ten OWASP
Monday, July 11th, 2005Cosa è OWASP? Il progetto Open Web Application Security Project (OWASP) è stato creato per aiutare le aziende e le organizzazioni a capire e migliorare la sicurezza delle loro applicazioni e dei servizi web. La Top Ten è stata creata per focalizzare l?attenzione verso le vulnerabilità più critiche. La sicurezza delle applicazioni web è diventata un argomento fondamentale dal momento che moltissime aziende cercano di rendere disponibili in rete un numero sempre più crescente di contenuti e servizi. Nello stesso tempo, gli hacker hanno rivolto l?attenzione verso gli errori di sviluppo comunemente inseriti dagli sviluppatori. Vediamo insieme questa lista :
- A1
Unvalidated Input
Le informazioni ricevute a seguito di una richiesta, non vengono validate dall?applicazione web. Questa tecnica può essere utilizzata per accedere alla parte di backend attraverso l?applicazione web in questione. - A2
Broken Access Control
Non vengono applicate restrizioni appropriate su quello che possono fare o meno gli utenti. Un utente malintenzionato può accedere ad account di altri utenti, visualizzare file sensibili o utilizzare funzionalità non autorizzate. - A3
Broken Authentication and Session Management
Le credenziali degli account e i token di sessione non sono protetti in modo adeguato. In questo modo possono essere compromesse le password, le chiavi, i cookie di sessione oppure altri token che permettono di bypassare le restrizioni di autenticazione per poter assumere un altra identità . - A4
Cross Site Scripting (XSS) Flaws
L?applicazione web può essere utlizzata come strumento per sferrare un attacco sul browser dell?utente finale. Con questa vulnerabilità è possibile carpire il token di sessione, attaccare la macchina locale, oppure accedere ai contenuti protetti dell?utente attaccato. - A5
Buffer Overflows
In alcune applicazioni web, alcuni componenti non eseguono un controllo formale sui caratteri in ingresso di alcune forme di linguaggio particolari. Ciò causa un crash dell?applicazione, fornendo la possibilità di prendere controllo di un processo. Queste componenti possono essere CGI, librerie, drivers e componenti dell?application server web. - A6
Injection Flaws
Alcune applicazioni web scambiano dei parametri quando accedono a parti esterne del sistema o al sistema operativo installato in locale. Se un utente malintenzionato riesce ad incapsulare dei comandi dannosi all?interno di questi parametri, il sistema esterno può eseguirli dietro comando dell?applicazione web - A7
Improper Error Handling
Sono condizioni d?errore che si verificano durante normali operazioni quando queste non vengono gestite correttamente. In questo modo è possibile ottenere informazioni su sistema, creare indisponibilità del servizio, causare il blocco di alcuni sistemi di sicurezza oppure far crashare il server. - A8
Insecure Storage
Le applicazioni web utlizzano solitamente funzioni crittografiche per proteggere I dati e le credenziali di accesso. Tali funzioni e il codice utilizzato per integrarle all?interno dell?applicazione web molto spesso viene realizzato in modo grossolano, causando un indebolimento del sistema di protezione. - A9
Denial of Service
Un utente può saturare una applicazione web con un numero di richieste pari da non permettere più l?accesso all?applicazione. In questo modo è possibile far disconnettere gli utenti dal proprio account oppure si può bloccare l?intero servizio. - A10
Insecure Configuration Management
Un?ottima configurazione del server è necessaria per il corretto funzionamento dell?applicazione. Spesso i server hanno un enorme insieme di parametri di configurazione e spesso i settaggi standard non sono adeguati.
Non vi resta che augurarvi buona lettura dei documenti sul sito e darvi i soliti link per approfondire :
- BrainBuld
- PhpSecurityConsortium [nice ma poco aggiornato]
- How to Build an HTTP Request Validation Engine(J2EE validation with Stinger)
- modsecurity project (Apache module for HTTP validation)
Learning new tricks
Sunday, July 10th, 2005Well, this last week was rather demanding, we still worked quite hard (surpassing the 50 weekly hours recommended by XP practices) and we are progressing nicely. Our development platform, for the moment, is based on eclipse loaded with some good plugins, subversion (really great versioning server), trac (a sort of bugzilla but more project managment and wiki oriented), and cruisecontrol (having troubles getting it compiled on gentoo but you can get the official jar). As far as the eclipse plugins are concerned I will name only a few, subclipse, SpringIde, eclipse-wtp 0.5, and some for modelling uml diagrams.
Yesterday we had a really nice session working with the spring framework. It’s based on the IoC and Dependency Injection design patterns and gives your application a lightweight container that’s easily extendable. For instance, your code want’s to do database access right? Well, if you write a server side code, you’ll use JNDI to get the connection from the application container (ex. Tomcat). Now your code is expecting that there will be a JNDI resource and that means that you’ll have to test it on the server or you’ll have to add more code so you’re ending up with a bigger project that’s even more difficult to mantain. Here comes spring. You use it as a lightweight container and to associate references through it’s factories using a consistent model. I can’t say that this technology is something that will stay with us but I must say that it’s the single sweetest thing I’ve seen by far lately even though it kind of breaks the OO paradigm. We even did a HelloWorld with it 🙂 (that accessed mysql remotely and postgres locally and even a version for Hibernate). The framework is really nice, for the moment we’re only looking the DAO and OR mapping API’s but we see some other sweet thigs in it as well.
For out italian friends a nice intro on spring with a j2ee example by mokabyte (part I and II).
Object Relational Mapping
Sunday, July 10th, 2005L’altro giorno mentre parlavo con Srepfler (l’unica altra persona che si ricorda di postare su questo blog ogni tanto) mi ha detto che per il progetto che sta realizzando avrebbe usato il pattern Object Relational Mapping al che mi son documentato in soldoni non è altro che un sistema per mappare delle tabelle di un database in oggetti in modo da dover lavorare con oggetti (metodi,attributi e proprieta) invece che usare l’sql, una comodita non da poco direi! Loro lo stanno usando sotto J2EE usando Hibernate e mi sono chiesto ma sotto php ci sarà qualcosa del genere? google docet :
Al che mi son chiesto e per il .net? utilizzando di nuovo google salta fuori veramente il finimondo:
- Genome 2.0
- Nolics.net 2.0
- Object Mapper [best choice]
- Elenco di sw
- Elenco sw II parte
Che dire buona lettura 😉
PS: un piccolo esempio in php (riferito all’articolo di phpbuilder), rimane il fatto che questo tipo di approccio richiede notevoli risorse e va un po in contro senso con la natura stessa del php!
Linux embedded system
Saturday, July 9th, 2005L’altro giorno leggendo una rivista ho trovato un’articolo che parlava di “FOX BOARD a complete Linux system on a small board“; questo embedded della Acme System monta un kernel 2.6 e ha 16MB di RAM, 4MB di FLASH; e come se nn bastasse ha 1 connettore Ethernet (10/100 Mb/s) e 2 USB 1.1. Il sistema è moddabile grazie all’ Open source SDK for Linux Systems e ai tool della acme. La cosa che reputo più interessante è il consumo 1 Watt soltanto e necessita di una alimentazione a 5V.

La comunity italiana si è gia mossa al riguardo provando ad alimentare il server con delle pile [foto] e collegandovi LCD panel [esempio LCD]
Per finire vi segnalo un link correlato :
Firmware ufficiali
e dove comprare in italia:
Comprel
un sito a lui dedicato oltre a quello ufficiale:
Capefox
Mono LiveCD
Saturday, July 9th, 2005Ecco qua qualcosa di inaspettato, un liveCd per testare/usare Mono, cosa contiene?
- Develop, compile and run software with MonoDevelop.
- Listen to your music collection in style with Muine.
- Take notes with Tomboy.
- Manage your photos with F-Spot.
- Search music, photos, chats, and documents with Beagle.
- Explore web applications such as ASP.NET Forums, IBuySpy, and mojoPortal.
Per averlo basta o usare il caro HTTP o il piu moderno BitTorrent.
l’unica pecca è che attualmente monta il Mono 1.1.7 e non l’ultimo 1.1.8 recentemente uscito.
Per concludere vi metto anche qualche link per approfondire su Mono :
BlogX
nGallery
Il blog di RedRabbit
Mono Combined Installer Construction Kit
X Remoto
Saturday, July 9th, 2005Mettiamo caso che avete più pc e lo spazio per un solo monitor che fare? bhe la cosa migliore che si può fare con linux è usare X da remoto. Seguitemi passo dopo passo in questo esempio pratico.
- PASSO 1
sul pc in cui gira X bisogna editare /etc/X11/xdm/xdm-config alla riga
!DisplayManager.requestPort: 0
rimuovendo il ! - PASSO 2
editare o xdm o gdm affinche sia abilitata la funzione XDMCP - PASSO 3
controllare nel firewall che le porte
177 UDP
6000 TCP
siano aperte - PASSO 4
per connettersi al server remoto si usa la sintassi
X -query ip_or_name_machine
oppure
X -broadcast
Attenzione se volete non è necessario usare xdm,gdm ma accedere direttamente ad X purchè lo lanciate manualmente e nn con startx in quanto attiverebbe -nolisten. Esempio: provate
X :1 -br
fluxbox -display :1
Se state usando Cygwin al posto di X usate il comando XWin. Esempio :
XWin -query 129.168.x.x:1 -fullscreen
NB: questo tutorial non funziona ancora perfettamente!!
Disaster recovery
Friday, July 8th, 2005Quanti HardDisk avete buttato/cambiato nella vostra vita? bhe io solo 1 ma i miei amici qualcuno in più; ma non solo questo rientra nella dicitura “Disaster recovery” infatti vi rientra anche l’errone cancellazione di file, e qui le cose si fanno più interessanti perchè molti di noi si dimenticano o nn hanno voglia di fare backup periodici. Allora tocca correre ai ripari ed ecco qualche software per voi 😉
- EasyRecovery [FAT e NTFS]
- PhotoRescue [USB/SD/MCC stick image recovery]
- Ultimate Boot Cd [I vostri HDD ringraziano!!]
nb: a breve anche i link per tool linux
Google Toolbar for Firefox
Thursday, July 7th, 2005Adobe Acrobat 7 Spyware “Feature”
Saturday, July 2nd, 2005Mha pensa te, ora la versione 7 di Adobe Acrobat Reader sotto linux ha un bellissimo spyware; per risolvere il problema si deve lavorare con il firewall a livello applicativo (Layer 7). Ecco in pochi passi come fare :
- eseguite :
groupadd nopriv
- eseguite :
cat /etc/group | grep nopriv
e dovreste ottenere una cosa simile a nopriv:x:440: - eseguite :
chgrp nopriv /opt/Acrobat7/acroread
chmod 2755 /opt/Acrobat7/acroread
dovreste ottenere
ls -l /opt/Acrobat7/
drwxr-xr-x 11 root root 80 Jun 6 01:10 Reader
drwxr-xr-x 7 root root 40 Jun 6 01:10 Resource
-rwxr-sr-x 1 root nopriv 6010 Jun 6 01:10 acroread
- Assicuratevi che nel firewall abbiate messo
<M> Owner match support
- Ora non vi resta che settare iptables come si deve :
$IPTABLES -A OUTPUT -m owner --gid-owner nopriv -j LOG --log-prefix=GROUP_NOPRIV:
$IPTABLES -A OUTPUT -m owner --gid-owner nopriv -j DROP
Bene a questo punto tutti gli applicativi con owner nopriv nn potranno accedere ad internet.