Sto sviluppando un'app Web, che effettua chiamate HTTP a condizione che l'utente non abbia effettuato l'accesso.
Una volta che l'utente fa clic sul pulsante login , viene inviato a una "pagina di accesso" che è HTTPS.
L'accesso effettua una chiamata Ajax a un servlet, in cui alcuni attributi specifici vengono aggiunti alla sessione.
Quindi, per risolvere il problema della "risoluzione della sessione" , la sessione corrente viene invalidata e viene creata una nuova sessione.
Dopo l'accesso, l'utente viene reindirizzato alla pagina dell'applicazione ma utilizzando HTTP.
Ora in ordine da non perdere gli attributi di sessione (tra HTTPS e HTTP) ho scavalcato il meccanismo predefinito Glassfish memorizzando nella cache il cookie JSESSIONID e inviandolo in risposta: ( questa è un'applicazione j2ee)
Cookie cookie = new Cookie("JSESSIONID", request.getSession().getId());
cookie.setMaxAge(-1);
cookie.setSecure(false);
cookie.setPath(request.getContextPath());
response.addCookie(cookie);
Funziona bene, ma ho letto su Stack Overflow, Sicurezza IT e generalmente online che la sessione potrebbe ancora essere dirottata. Ad esempio questa risposta indica che è una pessima idea, e che un uomo nel mezzo possa dirottarlo.
Non sono un esperto di sicurezza, ma vorrei il tuo feedback sul seguente meccanismo che ho creato:
- Quando digiti l'URL dell'app Web, la prima pagina di destinazione è HTTP. Tutti i meccanismi sono HTTP.
- Quando l'utente decide di "accedere", viene reindirizzato a una pagina e quella pagina "di destinazione" è HTTPS (applicata tramite il j2ee CONFIDENTIAL )
- Sul servlet, la risoluzione della sessione viene gestita invalidando la sessione e creando una nuova. Quindi vengono aggiunti gli attributi di sessione.
- Per non perdere gli attributi di sessione mentre si torna a HTTP, un cookie viene sovrascritto manualmente con lo stesso "ID sessione" e impostato su "non sicuro".
- Tutte le richieste di app sono nuovamente HTTP.
Questo è ancora un obiettivo facile per il dirottamento di sessione / MITM / o altri difetti di sicurezza?
Apprezzerei il feedback in quanto non ho molta esperienza con i dettagli di sicurezza.