Progettazione… Programmazione… Soluzione…
Post con tag POST
[Java] Invio di File ad una Servlet
4 giu
In Java le Servlet sono il primo strumento con il quale si viene a contatto, se si vuole realizzare una applicazione Web dinamica che interagisca con l’utente. Come sicuramente saprete, le Servlet sono in grado di ricevere le richieste HTTP GET o POST, e di restituire un risultato, che può anche dipendere dai parametri passati tramite la richiesta. Questa semplice caratteristica, è realizzabile grazie all’implementazione dei metodi doGet(…, …) e doPost(…, …) che la classe javax.servlet.http.HttpServlet mette a disposizione.
L’unico vero problema che ho riscontrato fin’ora con l’utilizzo di questa classe, è la limitazione da essa imposta riguardo il tipo di dati che è in grado di prelevare dalle richieste GET e POST che riceve. Infatti, con i due metodi sopracitati, è possibile solo elaborare richieste che contengono campi testuali che non fanno riferimento a codifiche particolari. Un classico esempio di questa limitazione, è l’impossibilità di inviare tramite GET o POST una immagine alla Servlet.
Java non offre nativamente altri strumenti per la gestione di contenuti di diverso tipo, quindi bisogna ricorrere ad una libreria esterna. Una libreria molto semplice ed intuitiva è messa a disposizione da Servlets.com ed è reperibile a questo indirizzo. La libreria in questione è com.oreilly.servlet, ed in particolare la classe che ci Continua >
Live HTTP Headers: sniffare ed analizzare il traffico HTTP
15 mag
In un precedente articolo vi ho parlato di come sia possibile effettuare una richiesta POST verso un sito Web utilizzando Java, con il meccanismo dei Socket. Il metodo che vi avevo illustrato si basava principalmente sull’analisi del form presente nella pagina Web che normalmente si occupa dell’invio dei dati. Quindi successivamente in Java, si inviavano i dati al Server Web sostituendosi al Browser ed inviando gli stessi dati che il form avrebbe inviato.
Il problema, o la limitazione principale di questa tecnica, è che non tiene conto di altri eventuali dati che il Browser potrebbe inviare al Server Web. Ad esempio, il Browser quando invia qualsiasi richiesta GET o POST invia anche un identificativo di esso, tramite il parametro User-Agent. Il Server Web che riceve una richiesta GET o POST, potrebbe analizzare i dati che riceve, e non accettare tutte le richieste dove questo parametro non è impostato. Da notare che questo parametro non compare assolutamente nel codice HTTP della pagina.
Il parametro User-Agent non è l’unico utilizzato dai Server Web per scartare richieste non provenienti da Browser comuni. Esistono molti altri parametri, che possono essere utilizzati a tale scopo. In questo articolo, utilizziamo Live HTTP Headers per sniffare tutto il traffico HTTP da e verso il Server Continua >
Java: HTTP POST con Socket
24 apr
Come potete vedere nei precedenti articoli riguardanti il Brute Force in Java e i vari metodi di attacco per le password, la sicurezza informatica è uno degli aspetti dell’informatica che preferisco, soprattutto per quanto riguarda la sicurezza in Internet. Vi sembrerà strano, ma non potete immaginare quanta gente dia per scontato il fattore sicurezza mentre naviga in rete, crea account e soprattutto quanto sceglie la password.
Proprio sulla scelta della password vorrei soffermarmi un attimo con una piccola considerazione, basata su dati statistici. Infatti, secondo alcuni studi, la password usata più spesso dagli utenti è la stringa “123456″. Questo dato mi è sembrato sconvolgente, ma posso assicurarvi che è molto realistico. Su questo argomento credo di fare a breve un articolo più approfondito, quindi per ora consideriamo semplicemente l’aspetto che riguarda Java, ed in particolare come fare una richiesta http usando il metodo POST, sfruttando i Socket.
I due argomenti sopra citati sono strettamente collegati, in quanto le applicazioni web sono costruite essenzialmente sfruttando il metodo GET per le varie richieste. Il metodo POST viene usato per elementari requisiti di sicurezza per la trasmissione di dati sensibili, quali appunto username e password al momento del login su un servizio web. Il metodo che vi mostro Continua >
Hacking: SQLInjection con SqlMap
30 mar
Molte volte ci addentriamo nel mondo del Web, nella creazione di un proprio spazio personale che piano piano si evolve, ma non sempre adottiamo le giuste precauzioni ed i giusti accorgimenti per quanto riguarda la sicurezza. In questi casi, ci viene in aiuto sqlmap, un ottimo tool per l’analisi delle vulnerabilità presenti in molte applicazioni web che fanno uso di database SQL.
Introduzione a SQLmapSQLmap è in grado di automatizzare il processo di analisi di vulnerabilità o exploit ai quali sono soggetti tantissimi server web. SQLmap è scritto in Python, il che lo rende indipendente dal sistema operativo utilizzato. Per funzionare, richiede solo in interprete Python in versione maggiore o uguale alla 2.5. Ho già introdotto in precedenti articoli (Hacking: SQL Injection, Difesa contro l’SQL Injection) il concetto di SQLInjection, tutti i pericoli che ne derivano e come difendersi progettando bene la propria applicazione web; ora vediamo come SQLmap riesce nell’analisi di SQLInjection in modo automatico e preciso. SQLmap implementa tre tecniche per l’analisi di vulnerabilità per l’SQL Injection:
- Inferential blind SQL injection, also known as boolean based blind SQL injection: sqlmap appends to the affected parameter in the HTTP request, a syntatically valid SQL statement string containing a SELECT sub-statement, or any other SQL Continua >