Login
Cerca all'interno di JavaPortal
Help
Home Page Documentazione Forum Progetti Partner Pubblica!
Documentazione > Tutorial > Miglioramento della sicurezza di pagine JSP
Hide
Best Practices
EJB
Frameworks
Howto
J2EE
J2ME and Wireless
J2SE
JSP e Servlet
Java Application Server
Java IDE/Tools
Java Media
Java Security
Java Sys Admin
Java e XML
Java e SQL
OpenSource Java
Patterns
Repository
Tesi
UML
Web Services
Slide
White Paper di jws.it
project management
Eventi
Groovy

Hai una tesi in Java?
Tesine preparate
per esami?
Pubblica tutto su
JavaPortal!

Scrivi al nostro staff


Promozione K-Tech per il Javaday


Publio Cornelio Tacito
Tutte le cose che ora si credono antichissime furono nuove


Introduzione a Groovy


Rss Feed
Home Page
Articoli
News
Forum
Classi

  Visualizza Commenti (0) Aggiungi Commento    
Add to Shortcuts
 
Vota l'articolo
Miglioramento della sicurezza di pagine JSP
By Roberto Colmegna
8 febbraio 2005

  Miglioramento della sicurezza di pagine JSP
Program JSP … un poco più sicure?
Program Come porre rimedio?

Si fa espresso divieto d’utilizzare i contenuti di questo documento per effettuare attacchi informatici.

Le informazioni espresse sono usabili SOLO per aumentare la sicurezza applicativa.

In qualsiasi caso l’autore NON SI ASSUME ALCUNA RESPONSABILITA’ derivante dall’uso improprio, da parte di chiunque, delle informazioni qui espresse.



JSP … un poco più sicure? top

Navigando s’incontrano spesso liste di link, generate in automatico da pagine JSP in funzione dei contenuti d’un DB, che permettono di vedere ed anche modificare i contenuti stessi.

Uno dei più classici link d’una lista è qualcosa del tipo:

<A HREF="modif.jsp?idRec=123">modifica il record con id 123</A>

oppure del tipo:

<A HREF="rimuovi.jsp?idRec=123">rimuovi il record con id 123</A>

Per quanto certamente funzionali allo scopo i due link hanno un, subdolo, difetti: sono pericolosissimi!

Immaginiamo di mostrare, ad un utente loggato, una pagina HTML con i soli link ai record a lui
accessibili. Supponiamo i record dell’utente siano solo quelli che abbiano gli ID: 1000,1010,1011,1100,1111.

Supponendo che i link di cancellazione siano scritti come quello visto sopra, ogni link avrà, dunque, un valore diverso al parametro “idRec”.

Supponiamo ora che l’utente, “sorvolando” uno dei cinque link, s’accorga che il browser lo informa che, cliccandoci, effettuerà la chiamata:

http://miosrv/mia_app/rimuovi.jsp?idRec=1000

Il nostro utente, però, è un tipo intraprendente, e prova a scrivere il link che vede nella barra degli indirizzi, mutandolo in:

http://miosrv/mia_app/rimuovi.jsp?idRec=2123

Supponendo che la pagina “rimuovi.jsp” si “fidi” di quanto arriva dal client, provvederà ad eliminare il record con ID=2123 senza batter ciglio! Come? Sento qualcuno dire “… e allora? Ha funzionato, qual è il problema?” … forse che il record con ID 2123 non apparteneva a quelle elencati tra quelli appartenenti all’utente loggato?!?!?

Sconcertante, vero? Si parla tanto di patching ai sistemi, di buffer overflow, di DoS, di DDoS, d’SQL injection ed invece si scopre che si può svuotare una intera tabella d’un DB, avendo i soli privilegi di poterne cancellare qualcuno e sfruttando una grave mancanza di sicurezza applicativa !!!



Come porre rimedio? top

Controllando i parametri ricevuti

Controllare, su ogni pagina che riceva un ID, che appartenga all’utente loggato.

Questa soluzione, tuttavia, aumenta di parecchio la complessità del codice ed appesantisce i tempi esecuzionali.

Criptando i parametri

Criptando i valori degli “idRec” ,inseriti nel codice HTML, inviato al client e decriptandoli alla ricezione,

Questa soluzione porta alla generazione di parametri HTTP parecchio lunghi, se si utilizzano algoritmi di criptazione “sicuri”.

Esponendo riferimenti indiretti

Consiste nel creare delle “bolle” (contesti) di metodi e parametri per attivarli, memorizzate in appositi array nella sessione utente sul server, ed inviando al client link che contengono indici a queste “bolle”.

Questa soluzione utilizza parecchia memoria sul server ma minimizza le informazioni esposte al client. Agevola, inoltre, la gestione degli eventi http.



Username:
Password:
To sign up for an account, click register... Register
Hide





Powered By



Campagna Anti-IF


Skin


PARTNER
Zio Budda
HostingJava


LICENZA



Eccetto dove diversamente specificato, i contenuti di questo sito sono rilasciati sotto licenza Creative Commons

Sitemap  © 2002-2004 Copyright Information. Privacy . Today is domenica 1 agosto 2010