Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [JAVA] Sicurezza delle servlet

    Salve, ho un dubbio di sicurezza riguardo un'architettura che ho pensato per un sito web basato su JSP e Servlet.

    Ho una servlet Dispatcher che viene richiamata su tutte le URL digitate (configurando con "/*" il file web.xml di Tomcat). Questa gestisce le autorizzazioni e se sono sufficienti fa accedere a sezioni determinate del sito facendo un forward della request. Siccome potrebbe chiamare delle servlet riservate volevo chiedere se secondo voi è possibile forwardare una richiesta alla servlet riservata da una servlet esterna di un potenziale attaccante.

    Schematizzando:
    Normalmente accade questo
    codice:
    Servlet riservata
         |
         |
         |
    Servlet Dispatcher <--------- richiesta
    E' possibile un attacco di questo tipo?
    codice:
    Servlet riservata
         |
         |
         |
    Servlet di terze parti che esegue un forward da remoto <--- richiesta
    In pratica la mia richiesta è: sono necessari ulteriori controlli di permessi all'interno della servlet riservata?

    grazie mille
    Ciao

  2. #2
    meglio postare in sicurezza?

  3. #3
    Bhe.... così su due piedi mi sembra una possibilità da non scartare, magari mi sbaglio. Certo si dovrebbe essere a conoscenza quantomeno della struttura delle classi, cosa che non dovrebbe essere visibile a livello servlet.
    Comunque per sezioni riservate magari è consigliabile creare un piccolo scambio di chiavi tra dispatcher e servlet invocata.
    Se poi si vuole andare ancora + a fondo è meglio evitare paramteri su request/response.

    Fammi sapere se qualcuno mi smentisce ha soluzioni invitanti perchè la cosa mi interessa.

    Ciauu
    ► ☺ ◄

  4. #4
    Evitare request e response nel senso di utilizzare protocolli orientati alla sicurezza?

    Mica sai se inoltre se è possibile invocare una classe da remoto? Cioè se io ho un bel Bean sul mio server che viene chiamato da pagine o servlet residenti su quel server, qualcuno potrebbe invocare il bean da un altro server o addirittura da un client creato appositamente?

  5. #5
    Originariamente inviato da Lancill
    Evitare request e response nel senso di utilizzare protocolli orientati alla sicurezza?

    Mica sai se inoltre se è possibile invocare una classe da remoto? Cioè se io ho un bel Bean sul mio server che viene chiamato da pagine o servlet residenti su quel server, qualcuno potrebbe invocare il bean da un altro server o addirittura da un client creato appositamente?

    assolutamente impossibile, a meno che non passare per altre vie che non siano la convenzionale request http.

    e per il tuo quesito precedente, ti rispondo che basta settare una struttura di permessi , roles con tomcat per esempio.. oppure ti basta utilizzare il dispatcher come punto di ingresso/uscita, cosicchè invece di fare il forward alle servlet, ti crei un'interfaccia, e la implementi nelle servlet che però alla fine piuttosto che mandare un'output ritorneranno per esempio una stringa, che il dispatcher dovrà mandare in out.

    Questo ti consente di avere in realtà una sola servlet che è poi il dispatcer, e vedere le altre servlet come classi qualsiasi.. un pò come le action di struts.

    spero di essere stato chiaro.

  6. #6
    Si, estremamente chiaro, grazie mille della risposta.

    Per quanto riguarda la struttura del progetto non vorrei utilizzare le roles di tomcat.
    Vorrei utilizzare o un dispatcher centrale che fa da filtro su tutte le richieste ("/*" e forward a seconda dei permessi) ma mi crea una carriola di problemi soprattutto con le url relative e il mapping delle JSP (dovrei mappare tutte le pagine JSP nel file web.xml come le servlet).
    L'altra alternativa è molto PHP style mettendo in un if di controllo permessi la pagina e un altro if di controllo permessi nelle eventuali servlet delicate.
    La prima è l'ipotesi che volevo portare avanti, ma sto incontrando troppi problemi.

    Ad esempio se uso le url relative non le trova, dovrei usare un getRealPath("/") per visualizzarle correttamente ma solo in locale, in remoto non me le vedrebbe! Fino ad ora non sono riuscito a risolvere il problema, se qualcuno di voi sa darmi una mano ben venga

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.