10 messaggi dal 10 novembre 2002

Ho creato una pagina con un form per accedere ad una pagina riservata.
Funziona tutto, ma ho scoperto che se digito l'indirizzo esatto della pagina a cui accedo tramite autenticazione questa comunque mi compare. Quale soluzione posso adottare?

Grazie a chi mi risponderà.
Per risponderti servirebbe del codice...
Cmq in linea di massima il principio è:
- crei un form di login
- la pagina di login riceve user e password, le verifica (tipicamente confrontandole con un record nel database) e, se la verifica ha avuto esito positivo, salva in sessione le credenziali dell'utente
- le pagine riservate come prima cosa verificano che l'utente abbia le credenziali per accedere alla pagina, verificando che la sessione dell'utente sia correttamente valorizzata. Se lo è visualizza la pagina, altrimenti effettua una redirect ad una pagina di errore

L'implementazione concreta sta a te

Matteo Casati
GURU4.net
10 messaggi dal 10 novembre 2002
grazie per avermi risposto.
Tutto quello che dici l'ho già fatto. Solo che la pagina che mi compare dopo aver effettuato login può, in un secondo momento, essere caricata semplicemente digitando l'url relativo: se io attraverso la pagina login.asp accedo alla pagina riservato.asp , digitando l'url www.miosito.it/public/riservato.asp la carico lo stesso.
In alternativa è possibile non far comparire l'url nell'indirizzo di explorer ?
enricoalfano ha scritto:
Tutto quello che dici l'ho già fatto. Solo che la pagina che mi compare dopo aver effettuato login può, in un secondo momento, essere caricata semplicemente digitando l'url relativo


Se è così, evidentemente, non hai fatto *tutto* quello che ti ho detto
In particolare mi sa che c'è qualche problema su come hai implementato l'ultimo punto che ti ho indicato:

le pagine riservate come prima cosa verificano che l'utente abbia le credenziali per accedere alla pagina, verificando che la sessione dell'utente sia correttamente valorizzata. Se lo è visualizza la pagina, altrimenti effettua una redirect ad una pagina di errore


Eventualmente posta un po' di codice...

Matteo Casati
GURU4.net
10 messaggi dal 10 novembre 2002
Carissimo Matteo,
io ho tre files nel primo INDEX.ASP ho il codice che segue:

<HTML>
<HEAD>
<TITLE>Autenticazione utente tramite password</TITLE>
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<BR><BR><BR>&nbsp;<table width="969" bordercolor="#FFFFCC" id="table1">
<tr>
<td width="222" align="center" valign="middle"> <div align="center">
<img border="0" src="../../immagini/stemmaprovsa.jpg" width="65" height="78">
</div></td>
<td width="478" align="center" valign="middle"><b><font color="#008000"><font size="5">U</font><font size="3">FFICIO
</font><font size="5">S</font><font size="3">COLASTICO
</font><font size="5">P</font><font size="3">ROVINCIALE DI SALERNO&nbsp;
</font></font></b></td>
<td width="255" align="center" valign="middle">
<img src="../../immagini/rep2.png" width="79" height="83" /></td>
</tr>
<tr>
<td colspan="3">
<p align="center">
<img border="0" src="../../immagini/p_saler_3a.jpg" width="583" height="77"></td>
</tr>
</table>
<p><BR>
</p>
<FORM ACTION="login.asp" METHOD="POST">
<TABLE ALIGN=CENTER BORDER=0 BGCOLOR=#000000>
<TR BGCOLOR=#EEEEEE>
<TD WIDTH=150 ALIGN=CENTER><font color="#008000">NOME UTENTE</font></td>
<TD>
<INPUT TYPE=TEXT NAME="nome_utente" SIZE=20>
</td>
</TR>
<TR BGCOLOR=#EEEEEE>
<TD WIDTH=150 ALIGN=CENTER><font color="#008000">PASSWORD</font></td>
<TD>
<INPUT TYPE=PASSWORD NAME="password" SIZE=20>
</TD>
</TR>
<TR BGCOLOR=#EEEEEE>
<TD HEIGHT=30 COLSPAN=2 ALIGN=CENTER>
<INPUT TYPE=submit NAME="show" VALUE="LOGIN" style="color: #008000">
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>


il secondo file è LOGIN.ASP

<%
Dim nome_ut
Dim pass
nome_ut = Replace(Request.Form("nome_utente"), "'", "''")
pass = Replace(Request.Form("password"), "'", "''")

Dim cn
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("utenti.mdb")
Dim sql
sql = "SELECT ID FROM Utenti WHERE NOMEUTENTE='" &nome_ut&_
"' AND PASSWORD='" &pass& "'"
Dim rs
Set rs = cn.Execute(sql)

Dim autenticato
if rs.eof then
autenticato = false
else
autenticato = true
end if
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing

if autenticato = true then
Session("Autenticato") = "OK"
Response.Redirect("riservato.asp")
else
Response.Redirect("index.asp")
end if
%>


ed infine il terzo è una normale pagina con dei link dal nome RISERVATO.ASP

<%
if Session("Autenticato")<>"OK" then
Response.Redirect("index.asp")
end if
%>
<HTML>
<HEAD>
<TITLE>Area riservata</TITLE>
</HEAD>
<BODY BGCOLOR=#BBBBFF>
<BR><BR><BR><BR><BR>
<DIV ALIGN=CENTER><H1><font color="#008000">AREA RISERVATA</font></H1>
<font color="#008000"><BR>
</font>
<H2><font color="#008000">UTENTE AUTENTICATO</font></H2>
<p align="left">&nbsp;<table border="1" width="71%" id="table1">
<tr>
<td width="306"><font color="#008000">1 -<b> Gestione congedi
Dirigenti Scolastici</b></font></td>
<td><font color="#008000"><b>1</b> </font>
<a href="addrecordadoinputfrm.asp"><font color="#008000">Inserimento</font></a><font color="#008000">&nbsp;&nbsp;
</font>
<p><font color="#008000"><b>2</b> </font><a href="cerca.asp">
<font color="#008000">Visualizzazione assenze</font></a></td>
</tr>
<tr>
<td width="306"><font color="#008000">2 - </font></td>
<td>&nbsp;</td>
</tr>
</table>
<p align="left"><BR></DIV>
</BODY>
</HTML>

il problema è che se digito l'indirizzo completo della pagina riservato.asp questa mi compare comunque. Come faccio ad occultare l'indirizzo o, perlomeno rendere difficile intercettarla?

Ciao e Buona Pasqua

Mi sembra strano che la pagina riservato.asp "compaia comunque" visto il codice che c'è all'inizio della stessa:

<% 
if Session("Autenticato")<>"OK" then 
Response.Redirect("index.asp") 
end if 
%>


Prova a farti stampare (response.write) il valore di Session("Autenticato") e dimmi cosa esce (senza aver effettuato la login ovviamente)

In secondo luogo prova ad aggiungere un response.end dopo la redirect:

<% 
if Session("Autenticato")<>"OK" then 
Response.Redirect("index.asp") 
Response.End
end if 
%>


Altra idea: prova a mettere il codice della pagina dentro un else:

<% 
if Session("Autenticato")<>"OK" then 
Response.Redirect("index.asp") 
else
%>
<html>
....
</html>
<%
end if 
%>


e dimmi se cambia qualcosa.

Buona Pasqua anche a te.
Ciao!
Modificato da m.casati il 06 aprile 2007 16.17 -

Matteo Casati
GURU4.net

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.