Architettura software dell'applicazione Web: sicurezza di base

1

Sono un principiante assoluto nel tema della sicurezza e so che dovrei leggere questo , ma ho una piccola domanda alla quale spero esista una risposta breve.

Diciamo che ho tre componenti di un'applicazione web che parlano tra loro:

  • un front-end;
  • un database;
  • un componente di archiviazione.

Ciascuno dei componenti risiede su una macchina fisicamente distinta che ha una connessione a Internet.

In che modo una macchina front-end può connettersi alla macchina del database in modo sicuro? Come può la macchina del database sapere che si tratta della macchina front-end che si collega e non di un utente malintenzionato?

Esiste una "best practice" per connettere due componenti in un sistema distribuito fisicamente in modo così sicuro, che solo alcuni componenti sono autorizzati ad accedere ad altri componenti mentre tutte le altre fonti sono limitate ad accedere a quei componenti?

    
posta AviD 05.03.2012 - 19:29
fonte

1 risposta

2

La soluzione standard qui utilizza effettivamente tre livelli, indipendenti dal server, in cui si dispone di un livello / server Web con connessione Internet (solo livello di presentazione), quindi un livello / server applicativo (logica aziendale dell'app), e poi un livello di database / server (archiviazione).

Un firewall si trova di fronte al tuo server web e consente solo il traffico web (http e / o https). Un altro firewall quindi collega tra il tuo server web e il tuo server applicazioni e consente solo i protocolli necessari per far funzionare la tua app passare attraverso e solo dai server web. Il web server è, in effetti, isolato tra due firewall in quella che chiamiamo DMZ e le interfacce sia da Internet nella DMZ che dalla DMZ nella rete interna sono strettamente controllate in modo che solo i protocolli previsti passano e solo a / da host attesi. Ma ... SOLO il livello web dovrebbe essere accessibile da Internet e utilizzare solo i protocolli necessari (HTTP e / o HTTPS). Il server delle applicazioni non dovrebbe essere, e il database e / o lo spazio di archiviazione dovrebbero ASSOLUTAMENTE non essere accessibili da Internet. L'idea è che solo il livello web front-end dovrebbe essere accessibile da Internet ... tutte le connessioni al livello applicazione dovrebbero provenire dal livello Web e tutte le connessioni al livello del database dovrebbero provenire dal livello applicazione.

Puoi renderlo più strong implementando SSL / TLS con autenticazione reciproca tra i livelli.

Microsoft ha una buona opinione su questo che è qui . Include un sacco di cose .NET / ASP, ma l'idea generale è indipendente dalla piattaforma.

    
risposta data 05.03.2012 - 20:06
fonte

Leggi altre domande sui tag