Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615

    Sicurezza avanzata in web app Java

    Carissimi,
    la mia web application che negli ultimi dieci mesi mi ha fatto dormire molto poco è quasi terminata.

    Ora, un consulente mi ha spiegato quanto segue. Tenere una web application su hosting remoto non è di per sé un errore anzi è molto comodo. Purché in quanto a due aspetti, sicurezza e riservatezza, non ci siano scelte: escludere i compromessi.

    Riguardo la sicurezza e l'integrità dei dati ho pianificato backup periodici dell'intera base dati, eseguiti anche se non espressamente richiesto dall'utente. Riguardo la riservatezza dei dati invece mi è stato consigliato di orientarmi su un sistema di crittografia con chiave pubblica e privata. Ovvero tutti i dati contenuti in tutte le tabelle della base dati sono criptati con una chiave privata. Viaggiano sul web criptati, giungono nel browser e solo lì, con la chiave pubblica in possesso dell'utente, vengono decriptati e visualizzati correttamente.

    Questa è la "rotta" da seguire. Ora, sul "come fare", qualcuno di voi ha indicazioni in merito da darmi? Avete qualche esempio o qualcuno di voi ha già seguito questa strada?

    Infine, gli accorgimenti adottati dovranno integrare il documento programmatico sulla sicurezza. Qualcuno di voi conosce EasyDPS?

    Grazie a tutti ed una buona giornata!

    Archimede

  2. #2
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Dotati di un certificato e poi affidati a ssl oppure, nel caso di servizi wb, a WS-security...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Grazie per la tua risposta, intanto. Sei stato rapido e molto gentile. Potresti indicarmi in forma assolutamente teorica i passi necessari (ovviamente a grandi linee) per giungere al risultato atteso?

    Dunque, il mio provider mette a disposizione il servizio di certificato ssl da 128 bit. Come posso avvalermene per realizzare quanto necessario, ovvero:

    1) I dati nel db sono presenti solo sotto forma di stringhe criptate
    2) Viaggiano come stringhe criptate
    3) Solo nel browser vengono decriptate e "riempiono" i vari campi visualizzati
    4) Stesso percorso all'inverso in caso di scrittura nel db
    5) Il tutto solo se l'utente possiede la sua chiave privata

    Grazie ancora!

  4. #4
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Per quanto riguarda la scrittura su db credo dipenda molto dal tipo di db che stai utilizzando e dal driver (jdbc ?) che usi per "accedervi" in maniera programmatica.

    Per quanto riguarda la cifratura, integrita', autenticazione delle connessioni credo tu debba "scegliere" se utilizzare semplicemente sicurezza a livello di trasporto (TLS) che credo possa andar bene nel caso tu ti stia occupando di una applicazione web senza utilizzo di web services "esterni" o se optare per una "soluzione" che preveda una sicurezza a livello di messaggio (Ovvero a livello piu' "alto") mediante l'utilizzo di WS-security.
    Nel secondo caso le cose si "complicano" un poco e dovresti vederti un poco di "teoria".
    Nel primo caso, invece, potresti procedere creandoti un certificato ssl (Mi pare di aver capito che gia' ce l'hai) farlo firmare (Occorre effettuare richiesta) da una CA "nota" ed utilizzarlo per la cifratura dei dati e per permettere ai client di effettuarne la decifratura.
    Per quanto riguarda l'autenticazione occorrera', invece, che i client facciano la medesima cosa... ovvero che essi stessi siano muniti di un certificato tramite il quale cifreranno i dati e tu (Lato server) andrai a decifrarli.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Oltre a ringraziarti per la tua competenza e disponibilità, ti dico subito che hai inquadrato perfettamente il problema ed hai capito di cosa ho bisogno. Non era una cosa così immediata, visto che alcuni miei colleghi non mi hanno dato indicazioni particolari in merito. Grazie davvero.

    Intanto ti dò subito i dettagli che mi hai chiesto: da una web application JSP, tramite driver jdbc accedo a base dati Postgre SQL. Essendo un'applicazione con dati sensibilissimi, e trovandosi presso un servizio di hosting condiviso, sulla sicurezza non devo scendere a compromessi.

    Intanto, non ci sono servizi esterni alla mia applicazione quindi credo che la soluzione più semplice vada benissimo. Poi, il certificato è quello riportato alla pagina del provider che puoi vedere cliccando qui. Devo farlo firmare da un'autorità preposta o va già bene così? Nel caso, quale mi consigli ed a quali costi? Poi devo chiedere una nuova firma per ogni copia della mia web application che distribuisco? Ecco, questo punto forse non mi è chiarissimo.

    Riassumendo, ecco in soldoni a quale risultato voglio giungere.

    1. Autenticazione All'atto del login al software, l'utente si fa riconoscere con la sua chiave privata e la sua password che viaggerà criptata e sarà decriptata dal software stesso.
    2. Lettura Se ad esempio il software dovrà caricare la schermata pazienti, il browser preleverà i dati dal database (ovviamente criptati, visto che nella base dati tutti i campi saranno criptati con la chiave pubblica) e solo nel browser, e riconosciuta la chiave privata dell'utente, provvederà a decriptarli mostrandoli nei campi della pagina web in chiaro.
    3. Scrittura Se il medico inserisce un nuovo paziente, al submit del form i dati inseriti saranno criptati e verranno quindi inviati i dati criptati, e sotto tale forma viaggeranno e saranno materialmente scritti nella base dati.

    Sin qui mi pare di aver correttamente inquadrato il problema, sei d'accordo? Vista la complessità dell'argomento vorrei procedere per piccoli passi così sono certo di muovermi nella giusta direzione.

    Archimede

  6. #6
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Ehi... smettila di ringraziarmi... sono un nubbio e darti un paio di consigli almeno generali e del tutto indicativi non puo' farmi altro che piacere.

    La cifratura/decifratura dei dati nel db devi farla programmaticamente facendo in modo che siano i servlet dell'applicazione a cifrarli durante l'inserimento e a decifrarli prima di renderli disponibili (Presumo facendo un forward alla pagina .jsp opportuna).
    Per cui, per questo puoi usare il tuo certificato del quale hai sia chiave privata sia chiave pubblica.
    Per quanto riguarda l'autenticazione dovrai imporre che ogni utente abbia un proprio certificato (Firmato da una CA a te "nota") e quindi dovresti importarlo nel tuo keystore.
    In questo modo potrai fare in modo che avvenga mutua autenticazione.

    Prendi queste considerazione come tali visto che ho avuto modo di tastare alcune di queste tecniche solamente a livello "didattico", cosa ben differente dall'applicarle a livello "enterprise" dove l'aspetto sicurezza/integrita' delle informazioni e' veramente IL punto essenziale.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.