Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Modifica parametri URL

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    16

    Modifica parametri URL

    Ciao a tutti,
    sto lavorando a un progetto di un sito dove ogni utente, inserendo il nome utente e la password, accede alla propria pagina personale.
    Se l'utente modifica i parametri dell'URL viene reindirizzato a una pagina a cui non dovrebbe aver accesso (come la home page di un altro utente).

    Esempio:
    www.mywebsite.it/home.jsp?id=3
    Se modifico "id=3" con "id=5" posso accedere alla pagina di un altro utente.
    Come posso risolvere questo problema?

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: Modifica parametri URL

    Originariamente inviato da BigNick
    Come posso risolvere questo problema?
    Grazie
    1) Evitare di avere in GET tale informazione, portandola in POST (se fattibile/utile); ciò non è ovviamnte sufficiente, bisognerà comunque anche...

    2) Attivare dei meccanismi di "protezione", inserendo in sessione dei parametri per cui se un utente tenta di accedere ad una pagina a lui non destinata verrà reindirizzato in una pagina di errore.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    16
    Infatti quando l'utente clicca sul pulsante "connetti", dopo aver inserito il suo nome utente e la password, i dati vengono passati alla servlet con metodo POST che controlla se i parametri inseriti sono corretti. In caso affermativo carica la pagina utente, altrimenti lo rimanda alla schermata di login con un messaggio di errore.
    Quali meccanismi di "protezione" posso adottare?
    Grazie

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Beh... se devi "proteggere" una pagina (più pagine) in modo che sia accessibile solo da un utente, dovrai inserire un controllo per verificare che l'utente che la sta richiedendo (i dati li avrai in sessione) sia esattamente quello che può accedere.

    Se il tuo scopo, invece, è solo quello di evitare che un utente abbia accesso a informazioni di qualcun altro, allora devi semplicemente far sì che sia la pagina a decidere quali informazioni visualizzare. Prendo ad esempio la tua precedente risorsa:

    www.mywebsite.it/home.jsp?id=3

    Dovrà diventare

    www.mywebsite.it/home.jsp

    E sarà la JSP a visualizzare i dati corretti, prendendo l'ID dalla sessione:

    codice:
    <% String id = session.getAttribute("id"); %>
    ...   // resto delle cose
    (chiaramente, dopo la login, l'ID andrà memorizzato in sessione, altrimenti la JSP non potrà recuperarlo in quel modo)

    In questo modo non è la richiesta http a passare l'informazione sull'ID dell'utente, ma è la sessione a guidare la navigazione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    16
    Sono riuscito a passare il parametro "id" tra le varie pagine JSP utilizzando la sessione, però ho riscontrato il seguente problema:
    se l'utente clicca sul tasto "disconnetti" la pagina JSP setta a null il parametro "id" e lo reindirizza alla pagina di login. Nel caso in cui l'utente decide di digatere il seguente URL
    www.mywebsite.it/home.jsp
    gli viene ricaricata la homepage dell'ultimo utente che si è connesso, al posto di essere reindirizzato alla pagina di login. Sono riuscito a risolvere questo problema aggiornando i file temporanei ogni volta che carico una nuova pagina WEB (impostando manualmente questa opzione dal browser).
    Vorrei sapere se esiste un comando JSP che mi permetta di aggiornare i file temporani ogni volta che apro una nuova pagina WEB???
    Grazie

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Per assicurarti che non accadano cose del genere (ciascuna sessione è legata al browser, quindi non potrai avere due utenti con la stessa sessione, se non facendo delle prove dallo stesso browser), fai scadere (invalida) la sessione alla logout:

    codice:
    session.invalidate();

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    16
    Sono riuscito a risolvere questo problema!!! Grazie per l'aiuto =)
    Però adesso mi sono accorto che se l'utente, una volta disconnesso (settato a null il parametro "id"), clicca sul tasto indietro gli viene ricaricata la sua homepage ma se aggiorna la pagina viene reindirizzato alla schermata di login.
    Nella home dell'utente ho messo il seguente codice JSP:
    codice:
    <%
    	String idUser = (String) session.getAttribute("id");
    	
    	if (idUser == null)
    	{
    		String redirectURL = "login.html";
    		response.sendRedirect(redirectURL);		
    	}									
    %>
    Come posso risolvere questo problema??
    Grazie

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da BigNick
    Come posso risolvere questo problema??
    Grazie
    Non è facilmente risolvibile e, sinceramente, non lo considero affatto un problema... chiunque sa che facendo clic sul tasto indietro il browser non effettua alcuna richiesta al server, ma ricarica la pagina che si è salvato in locale (si chiama caching).

    Esistono tecniche per impedire che il browser effettui il caching, facendo in modo che il back torni su una pagina "scaduta", ma bisogna lavorare a livello di header delle richieste HTTP e comunque non funzionano sempre.

    L'alternativa è inserire in ciascuna pagina una piccola porzione di codice JavaScript che effettui una chiamata AJAX al server in modo da controllare che la sessione non sia stata invalidata... Sicuramente chi lavora con codice lato client (JavaScript) ti saprà dare suggerimenti più completi.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2025 vBulletin Solutions, Inc. All rights reserved.