Posts tagged ‘Injection’

Spring e l’inversione di controllo

Spring è un framework creato per costruire applicazioni J2EE robuste, basato su una  architettura a strati  composta da sette differenti moduli. 

  • lo strato Core è la sua parte più importante e contiene le funzioni essenziali del framework. In questo layer vengono esposte la implementazione di Spring del principio della inversione del controllo.
  • lo strato DAO è  un layer di persistenza.    
  • lo strato AOP integra all’interno del framework le funzionalità tipiche della programmazione orientata agli aspetti.
  • lo strato ORM consente di integrare all’interno delle applicazioni alcuni tra i più popolari tool per l’accesso ai database relazionali, come ad esempio Hibernate, iBatis ed altri ancora.
  • lo strato WEB fornisce una implementazione del paradigma Model – View – Controller per le applicazioni web.

Ci si potrebbe chiedere  cosa si intende in concreto quando si parla di inversion of control e qual'è la differenza tra IoC e Dependency Injection ?  

Spesso infatti questi due termini sono usati indifferentemente, come se fossero sinonimi, in realtà indicano  concetti sottilmente distinti. 


Per Inversion of Control (IOC - inversione di controllo) si intende un pattern di programmazione, secondo il quale si tende a tener disaccoppiati i singoli componenti di un sistema, in cui le eventuali dipendenze non vengono scritte all'interno del componente stesso, ma gli vengono iniettate dall'esterno: non si segue il normale flusso di controllo dei linguaggi imperativi, in cui, nel momento del bisogno, si richiamano funzioni di classi o librerie esterne, gli oggetti quindi non istanziano e richiamano gli oggetti dal quale il loro lavoro dipende, ma queste funzionalità vengono fornite da un ambiente esterno tramite dei contratti definiti da entrambe le entità.

La Dependency injection è una delle tecniche con le quali si può attuare l'IOC. Essa prende il controllo su tutti gli aspetti di creazione degli oggetti e delle loro dipendenze. Spring usa molto diffusamente la Dependency Injection con il risultato, tra le altre cose, di eliminare dal codice applicativo ogni logica di inizializzazione. Normalmente, senza l'utilizzo di questa tecnica, se un oggetto necessita di accedere ad un particolare servizio, l'oggetto stesso si prende la responsabilità di gestirlo, o avendo un diretto riferimento al servizio, o individuandolo con un "Service Locator" che gli restituisce un riferimento ad una specifica implementazione del servizio. Con l'utilizzo della dependency injection, l'oggetto ha in sé solamente una proprietà che può ospitare un riferimento a quel servizio, e quando l'oggetto viene istanziato, un riferimento ad una implementazione di questo servizio gli viene iniettata dal framework esterno, senza che il programmatore che crea l'oggetto sappia nulla sul suo posizionamento del servizio o altri dettagli sullo stesso.

Hackers attaccano il sito MySQL.com

Leggo e riporto una notizia che mi ha lasciato alquanto allibito:

Il sito MySQL.com è stato attaccato dagli hacker nel fine settimana. L'attacco ha sfruttato una SQL injection per aprire le (poche) difese e far uscire i buoi. Gli hacker romeni TinKode e Ne0h del sito Slacker.Ro hanno rivendicato l'attacco. La tecnica della SQL injection consiste nel introdurre codice all'interno di una regolare query parametrizzata facendole eseguire invece delle query totalmente diverse. Gli hacker hanno estratto gli username e le password criptate dal sito e le hanno quindi postate su pastebin.com. A questo punto è stato un gioco da ragazzi risalire alle vere password usando un confronto tra le password criptate e un dizionario di hash di parole comuni. Con questo tipo di approccio si è scoperto che il product manager di WordPress utilizza una passowrd formata da 4 numeri per i servizi forniti da MySQL. Il sito MySQL offre alle aziende, software di gestione database open source e servizi annessi. Ci sono tecniche per prevenire che gli attacchi con SQL injection e per evitare che questo tipo di trucchetti possano permettere a malintezionati il furto di dati sensibili. Pratiche di sicurezza che nel caso di MySLQ.com hanno lasciato molto a desiderare. Inoltre, secondo quanto lasciato intendere da XSSed.com, il sito MySQL. com è da gennaio che risulta vulnerabile agli attacchi XSS.

Fonte: http://www.pc-facile.com/news/mysql_hacker/69297.htm

Possibile che il team di Mysql ( un leader nel suo settore ) sia stato così leggero nel realizzare le modalità di autenticazione del proprio sito istituzionale?

A quanto pare la risposta è si.

Sql Injection

Come combattere tale vulnerabilità.


sql injection

SQL Injection è una problematica che colpisce principalmente le applicazioni Web che si interfacciano a back-end con un database, anche se non unicamente circoscrivibile a questo ambito.

Essa è infatti una vulnerabilità in genere molto nota in tutte quelle applicazioni (anche client/server) che interrogano un DB.
 

Continue reading ‘Sql Injection’ »