È possibile un'architettura a tre livelli con logica aziendale simile a un riposo o praticabile per applicazioni Web sicure?

StackOverflow https://stackoverflow.com/questions/5453779

Domanda

Quindi sentiti libero di rispondere non solo a questa domanda, ma a buttare suggerimenti o miglioramenti. Non ho mai messo insieme un'applicazione Web su larga scala prima. Ecco il mio processo di pensiero:

  • Strato di persistenza: Database standard (mysql in questo momento)
  • Livello logico aziendale: Struttura simile a un riposo (PHP, JAVA SERVLETS, ECC ...)
  • Livello di presentazione: Browser Web, dispositivi Android (applicazione non browser) e altri

Il motivo per cui ho selezionato questa architettura è che i dispositivi possano escogitare le proprie interfacce personalizzate e attingere alla funzionalità simile a un riposo utilizzando Get, Post e cosa non interagire con il server.

Problema 1:

Il problema è: come proteggere le informazioni dell'utente? È possibile autenticare l'utente tramite una connessione SSL e restituire un hash speciale in modo che l'utente possa manipolare il proprio account, ma se qualcuno sta ascoltando sulla rete, tutto ciò che deve fare è ascoltare una chiamata di riposo e rubare l'hash. Una soluzione è che tutte le chiamate a riposo devono essere su SSL, ma questo causa un altro problema.

Problema 2:

Se le procedure di riposo sono in SSL, il browser deve usare SSL per tutto ciò che dalla mia comprensione può essere lento e ingombrante quando non necessario. Inoltre, SOP rende impossibile utilizzare le chiamate SSL Ajax alle procedure di riposo da un browser non sicuro. HTTP e HTTPS sono considerati origini diverse anche se è la stessa origine, un protocollo diverso.

Questa soluzione è praticabile? Come risolverei questi due problemi? O forse (probabilmente) esiste un'architettura migliore che dovrei cercare per la mia applicazione web. Grazie in anticipo per tutti i suggerimenti.

È stato utile?

Soluzione 2

A quanto pare, in realtà non esiste un'ottima soluzione per questa risposta. Puoi proteggere tutto con SSL o escogitare il tuo sistema di autenticazione per la birra domestica. Un metodo comune è quello di inviare all'utente un hash unico, memorizzare l'hash nel database e in un cookie sulla macchina del client. Quindi solo l'IP, l'agente utente di quell'utente, ecc. Saranno autenticati a quel cookie.

Quindi la risposta è sì, la soluzione è praticabile. Precauzioni di sicurezza extra dovranno essere mantenute per non consentire il dirottamento dell'account. SSL per l'accesso proteggerà la password. Un hash unico consentirà all'utente di continuare ad essere autenticato senza regalare la password all'account. La memorizzazione di una grande quantità di informazioni sull'utente come IP, agente del browser, ecc ... non consentirà un facile dirottamento di un account.

Altri suggerimenti

Se vuoi proteggere il informazione Devi utilizzare SSL, poiché chiunque può ascoltare la rete e visualizzare le informazioni dell'utente. Se vuoi proteggere il accesso, quindi usa l'autenticazione HTTP RFC2617. Oltre SSL, Basic è abbastanza sicuro, ma se non si desidera utilizzare SSL per ogni richiesta, Digest è la strada da percorrere:

  • La tua applicazione può essere apolida: cioè più riposante, bilanciamento del carico più facile, ...
  • Il token di autenticazione non può essere riutilizzato se ascolta (nessun dirottamento della sessione)
  • Quasi ogni client HTTP (browser o Lib) può utilizzare l'autenticazione HTTP di base o digest.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top