Un'app client tradizionale che si connette direttamente a un database è una buona idea?

4

Dopo aver utilizzato l'eccellente interfaccia di amministrazione di Django, pensavo di creare un sistema simile che non fosse così legato a un ORM.

Ora, considerando questo, ho pensato che il superamento delle limitazioni delle webapps (widget di base, sessioni, moduli basati su testo / HTTP, lingue distinte lato client / lato server nella maggior parte dei casi con un meccanismo di comunicazione limitato, ecc.) fossero un grande timewaster, e forse lo sviluppo tradizionale della GUI era un'opzione migliore.

Questo mi ha portato a utilizzare un'app desktop e quindi una parte server che si collega al database e la espone tramite RPC (servizi Web, qualunque sia) all'app desktop, gestendo la sicurezza nella tradizionale modalità webapp.

Tuttavia, al giorno d'oggi è possibile connettersi ai database in remoto in modo sicuro utilizzando SSL e presumibilmente i database forniscono un'autorizzazione basata sui ruoli (GRANT / REVOKE), quindi perché non connettersi direttamente al database ed evitare di codificare un server?

È una buona idea? Ci sono problemi inattaccabili con questo approccio? [Penso che in combinazione con una buona introspezione del database, si possa scrivere un framework relativamente semplice che consenta un RAD molto bello di app basate su database)? Quali sono i problemi teorici e quali sono i problemi con implementazioni specifiche?

domanda bonus: i database forniscono un'autorizzazione sufficiente? Mentre facevo la mia ricerca, mi sono imbattuto nel seguente thread di discussione:

link

che pone alcuni buchi nel tradizionale controllo di accesso basato su viste nell'implementazione di PostgreSQL.

    
posta alex 04.02.2012 - 11:41
fonte

2 risposte

3

Ci sono diversi punti che devi considerare per collegare un'applicazione direttamente a un database e affidarti a userid come meccanismo di controllo di sicurezza:

  1. Come proteggere le credenziali di connessione al database sul client. Non c'è un modo semplice per sapere che è garantito al 100%.

  2. Di solito è meglio progettare la sicurezza intorno al concetto di ruolo e associare il ruolo a un ID utente. collegare l'id utente all'autorizzazione non è molto flessibile. I database che conosco supportano solo le autorizzazioni userid.

  3. Per connettersi direttamente a un database, è necessario:

    3.A. Cripta i dati comunicati tra il server e il client

    3.B. Ignora i firewall sul client (almeno) e apri una porta del server specifica. Non tutti i fornitori di servizi lo consentono.

I servizi Web e Microsoft Silverlight che utilizzano i servizi RIA consentono di superare questo problema.

Suggerirei di non collegarti direttamente al database a causa di quanto sopra e dei possibili problemi di sicurezza se i dati dell'applicazione devono essere sicuri.

    
risposta data 04.02.2012 - 13:13
fonte
1

Se la tua preoccupazione principale è l'usabilità, un'applicazione desktop è assolutamente la strada da percorrere. La maggior parte dei linguaggi moderni dotati di strumenti GUI dispone anche di robuste librerie per la comunicazione con i database.

    
risposta data 04.02.2012 - 14:17
fonte

Leggi altre domande sui tag