Utilizzo di diverse connessioni DB per diversi gruppi di utenti in un framework web

0

I progettisti di database che costruiscono sistemi aziendali di solito assegnano diversi set di privilegi a diversi utenti di DBMS. Possono essere granulari quanto necessario.

Tuttavia, secondo la mia esperienza, i framework web di solito utilizzano una singola connessione a un DBMS e i privilegi vengono assegnati e applicati a livello di framework, attraverso una sorta di schema di controllo degli accessi. La connessione al database utilizzata dal framework ha i privilegi completi sul database, poiché potrebbe essere necessario creare o eliminare tabelle, ad esempio quando vengono installate o rimosse le estensioni.

A volte esistono estensioni vulnerabili di un framework che possono consentire attacchi SQL Injection. Queste estensioni sono spesso sviluppate da terze parti e non dagli sviluppatori di framework.

La mia domanda è:

Qual è l'efficacia di fornire più connessioni DB con vari privilegi per diversi gruppi di utenti di un framework Web - come misura di sicurezza? Ad esempio, la connessione per un amministratore di sistema può consentire la creazione e eliminazione delle tabelle, ma la connessione per un utente pubblico può consentire solo la lettura di determinate tabelle.

Questo non sarebbe un sostituto per lo schema di controllo di accesso nel framework, ma come una misura aggiuntiva contro SQL Injection.

Questa è una buona idea, o del tutto inutile? Per favore, spiega.

    
posta Ron 04.05.2014 - 09:51
fonte

1 risposta

1

Penso che il modo più semplice per prevenire questo è usare dichiarazioni preparate di qualche tipo. Piuttosto che preoccuparsi dell'iniezione SQL come un problema di autorizzazione, preoccuparsi di questo come un problema di input.

Detto questo, non so quanto sarebbero efficaci le diverse stringhe di connessione. Se trovi che desideri separare i controlli, non lo farei dall'utente. Lo farei accedendo necessario. In questo modo, un amministratore di sistema che visualizza il contenuto avrebbe le autorizzazioni più basse di cui aveva bisogno per farlo. La connessione si "eleva" da sola una volta che ha dovuto fare qualcosa che richiede i permessi CREATE / DROP TABLE. Questa è probabilmente una soluzione più robusta.

    
risposta data 04.05.2014 - 22:29
fonte