Proteggere i dati memorizzati nel BE

di il
4 risposte

Proteggere i dati memorizzati nel BE

Buonasera, sto realizzando un'applicazione multiutente in Access e l'ho divisa in BE e FE.
I dati memorizzati nel BE sono sensibili e sto pensando in che modo proteggerli dallo sguardo indiscreto di un eventuale utente troppo "curioso".

Partendo dall'presupposto che sono impossibilitato ad usare altre tipologie di applicazioni diverse da quelle della Suite MS Office ho pensato ai seguenti scenari per l'implementazione del BE:
a) Database ACCDB Protetto con password (quindi i con i dati cifrati);
b) Database mdb con implementazione Sicurezza a livello utente - protetto con password (mi sembra di aver capito che in questo caso non c'è cifratura come nel caso accdb);
c) Come il punto b ma i dati sensibili vengono cifrati con algoritmo personalizzato;

L'Architettura del FE ha una struttura composta da 1 Database accdb protetto da password e uno accde.
Tramite il database accde faccio partire il database accdb e successivamente realizzo anche il collegamento alle tabelle salvate nel BE (solo una volta, quando l'applicazione viene lanciata la prima volta).
Quando il database ACCDB viene chiuso non cancello le tabelle collegate per evitare di rallentare ulteriormente l'apertura dell'applicazione. (al momento ci mette circa 40 secondi perché interagisce con un file Excel molto pesante)

Al momento io sto lavorando con l'opzione a) del BE e con il FE come ho descritto sopra.
Le mie considerazioni sono:
- avendo fatto in modo da "nascondere" la password, usata per accedere ai database e creare i collegamenti alle tabelle, nel codice del file accde;
- verificando che esso possa essere aperto solo in determinate condizioni di sicurezza (trustedlocation forzata, schermata applicativo invisibile, tasto shift disabilitato ecc.)
..io possa ritenere che i dati siano protetti.

Mi piacerebbe avere un parere sulla soluzione che ho adottato ovvero dei suggerimenti (o delle critiche) per essere ragionevolmente sicuro che l'utente "smanettone" non possa accedere a tutti i dati integralmente memorizzati nel BE (o almeno molto scoraggiato nel tentativo).

4 Risposte

  • Re: Proteggere i dati memorizzati nel BE

    La prima cosa da capire sarebbe se il tuo D.L. ha consapevolezza della tipologia dei dati che tratta il tuo applicativo e, se, in relazione al GDPR ha l'obbligo di attuare direttive per la protezione e garanzia dei dati.
    Se la risposta è si, quello che hai fatto non andrà bene ovviamente, e potrebbe mettere il tuo D.L. in difficoltà, e tu di conseguenza.

    Se invece parliamo di altro, ma non so se tu possa auto definire questa cosa in autonomia,... direi che a prescindere le tabelle vanno scollegate pazienza se impiega tempo.
    La versione ACCDB non va bene, nemmeno se ha la pwd.

    La PWD di Access si buca in qualche secondo, fino ad A2003 anche meno dal momento che era in CHIARO leggibile nel binario ad un certo BYTE.
    Da A2007 con l'avvento degli accdb puoi criptare il db, potrebbe essere un passo, ma in tutto questo il punto debole è la Pwd di Access e le Linked.
    La connection string la puoi anche salvare nell'mde/accde ma bucata la pwd di access tutto è finito.
    Parliamo del codice, deve essere a prova di QUALSIASI errore, soprattutto se usi ACCDB altrimenti si entra in debug a gratis... e generare errori è semplice, entrato in debug sai bene cosa si vede...
    SQL INJECTION altra cosa assai importante da valutare... quando si generano i Filtri con le textbox per la ricerca...
    Ecc...

    Argomento assai spinoso e molto più tecnico di quanto si possa pensare.
  • Re: Proteggere i dati memorizzati nel BE

    Grazie Alex, mi hai offerto diversi spunti di riflessione e approfondimento.. se possibile vorrei chiederti alcune cose che non ho capito bene.

    Se proteggo un database in formato accdb con una password forte da 30 caratteri ed esso non è ne FE ne BE ma un semplice database salvato sul mio desktop senza maschere, query e moduli ma ha soltanto tabelle con i dati.
    Secondo le tue conoscenze sarebbe comunque possibile facilmente riuscire a bucare la password?
    Cioè anche la versione accdb soffre dello stesso male di quella mdb? (password in chiaro in qualche bit.. o altre oscenità del genere)

    Prima di rispondere ho cercato di approfondire l'argomento ed ho trovato i seguenti link che mi hanno permesso di apprendere cose che personalmente non conoscevo:
    https://www.devhut.net/2016/08/19/why-ms-access-isnt-a-secure-database/
    https://www.devhut.net/2016/08/26/why-ms-access-isnt-a-secure-database-part-2/
    https://www.devhut.net/2016/09/01/securing-your-ms-access-database-front-end/

    Nel primo dei tre ho trovato anche un codice che sembrerebbe "celare", nella tabella di sistema, la password delle tabelle collegate, ma poi l'autore, nell'ultimo post dell'articolo, afferma che sarebbe comunque facile risalire alla password esternamente anche quando il database accdb o accde è in funzione.. ma poi usando il tools (realizzato in access) da lui proposto nel secondo link in realtà sembrerebbe che la password non venga rilevata... Ha affermato una cosa esatta nel dire che la password è facilmente ottenibile anche con questo stratagemma?

    Il 3 link invece propone una sorta di connessione virtuale che devo ancora approfondire...

    Per quanto riguarda l'applicativo che sto realizzando posso dire che per fortuna è ancora in fase di sviluppo quindi, fatte salve le tue ottime considerazioni in merito a SQL INJECTION, gestione degli errori per evitare la visualizzazione della modalità di debug ecc... mi piacerebbe comunque approfondire, per quello che è possibile fare in un forum, la questione.
  • Re: Proteggere i dati memorizzati nel BE

    Angelo_Tbp ha scritto:


    Grazie Alex, mi hai offerto diversi spunti di riflessione e approfondimento.. se possibile vorrei chiederti alcune cose che non ho capito bene.

    Se proteggo un database in formato accdb con una password forte da 30 caratteri ed esso non è ne FE ne BE ma un semplice database salvato sul mio desktop senza maschere, query e moduli ma ha soltanto tabelle con i dati.
    Secondo le tue conoscenze sarebbe comunque possibile facilmente riuscire a bucare la password?
    La Pwd è considerata un deterrente a prescindere, ed il tentativo di Violarla, se non autorizzato, perseguibile.
    Detto questo, la PWD di access non è sicura, se anche hai una PWD robusta come dici, ci sono TOOLS dedicati alla manutenzione, non sono free, che impiegano qualche secondo.

    Angelo_Tbp ha scritto:


    Cioè anche la versione accdb soffre dello stesso male di quella mdb? (password in chiaro in qualche bit.. o altre oscenità del genere) Che io sappia no.

    Angelo_Tbp ha scritto:


    Prima di rispondere ho cercato di approfondire l'argomento ed ho trovato i seguenti link che mi hanno permesso di apprendere cose che personalmente non conoscevo:
    https://www.devhut.net/2016/08/19/why-ms-access-isnt-a-secure-database/
    https://www.devhut.net/2016/08/26/why-ms-access-isnt-a-secure-database-part-2/
    https://www.devhut.net/2016/09/01/securing-your-ms-access-database-front-end/

    Nel primo dei tre ho trovato anche un codice che sembrerebbe "celare", nella tabella di sistema, la password delle tabelle collegate, ma poi l'autore, nell'ultimo post dell'articolo, afferma che sarebbe comunque facile risalire alla password esternamente anche quando il database accdb o accde è in funzione.. ma poi usando il tools (realizzato in access) da lui proposto nel secondo link in realtà sembrerebbe che la password non venga rilevata... Ha affermato una cosa esatta nel dire che la password è facilmente ottenibile anche con questo stratagemma? Non ho verificato, ma se mentre il DB è in servizio, quindi con Tabelle "Connected", secondo me la MsysObject restituisce la Connessione in chiaro...
    Puoi facilmente provare.

    Angelo_Tbp ha scritto:


    Il 3 link invece propone una sorta di connessione virtuale che devo ancora approfondire...

    Per quanto riguarda l'applicativo che sto realizzando posso dire che per fortuna è ancora in fase di sviluppo quindi, fatte salve le tue ottime considerazioni in merito a SQL INJECTION, gestione degli errori per evitare la visualizzazione della modalità di debug ecc... mi piacerebbe comunque approfondire, per quello che è possibile fare in un forum, la questione.
    La cosa indispensabile sono gli aspetti GDPR, i livelli di accesso, la tracciabilità degli accessi, la Cyber-Security del sistema ecc.
    Il resto se non hai questi vincoli che impongono normativamente al D.L., che è responsabile, credo che il buonsenso sia sufficiente.
  • Re: Proteggere i dati memorizzati nel BE

    @Alex ha scritto:


    Non ho verificato, ma se mentre il DB è in servizio, quindi con Tabelle "Connected", secondo me la MsysObject restituisce la Connessione in chiaro...
    Puoi facilmente provare.
    E' proprio questa la particolarità del codice proposto nel link, ovvero di far rimanere il campo "Connect" della tabella "MsysObject" vuoto anche quando le tabelle linkate puntano ad un database protetto da password.. e ciò avviene anche quando le tabelle sono connesse per merito del codice "workaround" proposto nel primo link del mio ultimo post…. anche se ho notato che la proprietà "name" del recordset "fconnection" presenta giustamente l'intera stringa di connessione compresa la PWD (forse cercherò di approfondire con un altro 3D altrimenti rischio di uscire fuori tema).

    Comunque mi ritengo soddisfatto delle risposte… e pertanto credo che rimarrò con l'attuale configurazione BE FE, ma cifrerò i dati di due campi del BE con un algoritmo tipo TRipleDES o simili… più per diletto che per necessità

    Grazie di tutto. A presto.
Devi accedere o registrarti per scrivere nel forum
4 risposte