Qualcosa di molto strano e imbarazzante mi è successo l'altro giorno e non ho parole per descrivere quello che è successo.Spring Security/JSF/Hibernate Accidental Session Hijacking su Tomcat?
La mia app esegue Spring 3 integrata con JSF 2.1, Hibernate 4, Spring Security tutte su Tomcat 7. Ero al telefono con qualcuno di importante di livello C e eravamo contemporaneamente contemporaneamente nello stesso ambiente di test su le stesse pagine. Andò a navigare verso una pagina alla quale stavo navigando più o meno nello stesso momento in cui la sua pagina si avvicinò con i miei dettagli dell'account personale. Non gli credevo, quindi sono andato nel suo ufficio e abbastanza sicuro, in qualche modo è stato registrato come account per il quale non ha la password.
L'applicazione avrà protetto le informazioni sulla salute del paziente, quindi mi è stato ordinato di fornire a C-level un rapporto completo con quello che era successo, ma non riesco a trovare come fosse possibile. Ho setacciato il codice base e non ho trovato nulla. Ho provato a riprodurre lo scenario esatto in più occasioni e non sono mai riuscito a riprodurlo. Non ho nemmeno un'ipotesi plausibile di cui sono felice.
Penso che ci potrebbe essere stata qualche operazione thread non sicura sulle sessioni memorizzate nell'implementazione del contesto dell'applicazione Tomcat, ma non ho modo di provarlo se non è riproducibile. Ho anche pensato che dal momento che Spring Security funziona come un filtro in vista di altre richieste e in avanti, forse uno degli altri filtri servlet ha interferito. Gli altri due erano il filtro Caricamento file Primefaces e il filtro SEO Omnifaces che avevo aggiunto di recente.
Il filtro Omnifaces ha effettivamente interferito con il filtro File Upload di Primefaces che ho dovuto armeggiare con la sua configurazione in modo che entrambi giocassero bene l'uno con l'altro, quindi mi sento ancora che potrebbe essere anche una possibilità.
Esistono bug noti con Spring Security che hanno causato problemi simili? Esistono problemi noti con Tomcat in merito al servizio accidentale dello stato della sessione da ApplicationContext? Qualcun altro ha avuto un problema simile o ha avuto un'idea unica di questo?
EDIT: Poco dopo questo distacco ho trovato questo, pubblicato solo pochi giorni fa:
Session mix up - apache httpd with mod_jk, tomcat, spring security - serving data of other user
E 'quasi esattamente la stessa messa a punto come ho Apache httpd + mod_jk plug-in di fronte Tomcat così certamente io non sono pazzo :)
UPDATE:
sono stato in grado di riprodurre il problema in m y ambiente di sviluppo senza mod_jk o Apache in primo piano, quindi posso tranquillamente escluderlo come colpevole.
Quando questo ha fatto in modo che le persone vedano gli account di altre persone qui su SO, si è arrivati a un caching troppo aggressivo da parte di un ISP. Quindi c'è un proxy/cache tra te e l'applicazione? – ChrisF
@ChrisF Solo Apache che delega al connettore mod_jk Tomcat. È un singolo server che esegue sia Apache che Tomcat. Forse Apache sta memorizzando nella cache qualcosa? Ho intenzione di provare a rimuoverlo e vedere se riesco a riprodurre l'errore. –