Quando si costruisce un'applicazione web a più livelli / livelli in cui ogni livello è fisicamente separato dagli altri, è importante che uno stack di comunicazione diverso venga utilizzato dai livelli di back-end, che non sono esposti a Internet- rispetto al livello web che è?
Essendo consapevoli della sicurezza nella creazione di un'applicazione Web, sto creando un livello intermedio (server di back-end, server delle applicazioni) che gestisce l'accesso ai dati per l'applicazione Web in modo che il server Web non abbia mai accesso diretto al database.
Ho pensato che dovevo fare in modo che il server delle applicazioni usasse un protocollo di comunicazione diverso da quello esposto sul server web. Se il mio livello intermedio espone i servizi web HTTP / REST utilizzando lo stesso stack tecnologico del server web, il livello intermedio non sarebbe altrettanto facilmente compromesso?
Come tale, ho fatto comunicare al middle-tier un protocollo TCP binario mentre il server web espone i servizi web HTTP / REST. Il lato negativo di questo è tutto il sovraccarico. Ho bisogno di definire entrambe le interfacce due volte (una volta per l'application server e una volta per il web server) e ho bisogno di gestire due librerie / protocolli di comunicazione e le loro stranezze.
Questa è la complessità richiesta dallo sviluppo di applicazioni web sicure? Ho ragione di aver bisogno di utilizzare protocolli / librerie diversi su Application Server e Web Server?
Modificato per aggiungere: Questo riguarda la mitigazione nel caso in cui il server Web sia compromesso. Il server web può fare molto meno del middle-tier (in particolare, non accedere al database). Un utente malintenzionato che compromette il server Web sarebbe nocivo; ma ottenere un accesso illimitato al database sarebbe molto peggio.