+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Problema creazione area protetta

  1. #1
    alex16578 non è in linea Novello
    Post
    2

    Problema creazione area protetta

    Ciao ragazzi,

    sto lettermalmente impazzendo in quanto sto cercando di creare un'area riservata al mio sito. Ho provato una valanga di script ma mi danno tutti lo stesso problema. Praticamente dopo aver settato il tutto quando clicco su login al posto di indirizzarmi alla pagina mi viene aperto (come se volessi procedere al download) il file login.asp.

    Ecco la procedura che ho seguito. Spero che possiate aiutarmi

    CREARE IL DATABASE


    Per prima cosa è necessario creare il Database contentente nome utente e password di tutti coloro a cui è consentito l'accesso nell'area riservata. Creiamo un database chiamato utenti.mdb; apriamolo e creiamo (tramite la visualizzazione struttura) una tabella che chiameremo Utenti che conterrà 3 campi:
    • ID: sarà la chiave primaria della tabella
    • nomeutente: conterrà il nome di ogni utente
    • password: conterrà la password relativa ad ogni nome utente
    Ecco mostrato ciò che dovreste ottenere:

    Figura 1: Struttura del Database.
    A questo punto inseriamo dei nomi utente e delle password a nostra scelta; tali dati ci permetteranno di testare successivamente lo script che stiamo realizzando.
    Questo primo passo vi sarà utile per prendere confidenza con la creazione dei database; nel caso siate già esperti o abbiate dei problemi nel realizzare il database di supporto a questo articolo, potete scaricarlo direttamente cliccando qui (realizzato con Access2000).

    CREARE LA HOME PAGE

    Supponiamo di avere la nostra home page che chiameremo index.asp, con tutti i suoi contenuti e con, nella posizione in cui preferite, il form che permette l'accesso all'area riservata; per motivi di semplicità e chiarezza, nella homepage di questo esempio visualizzeremo solo il form di accesso:

    <HTML>
    <HEAD>
    <TITLE>Autenticazione utente tramite password</TITLE>
    </HEAD>
    <BODY BGCOLOR=#BBBBFF>
    <BR><BR><BR><BR><BR>
    <FORM ACTION="login.asp" METHOD="POST">
    <TABLE ALIGN=CENTER BORDER=0 BGCOLOR=#000000>
    <TR BGCOLOR=#EEEEEE>
    <TD WIDTH=150 ALIGN=CENTER>NOME UTENTE</td>
    <TD>
    <INPUT TYPE=TEXT NAME="nome_utente" SIZE=20>
    </td>
    </TR>
    <TR BGCOLOR=#EEEEEE>
    <TD WIDTH=150 ALIGN=CENTER>PASSWORD</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">
    </TD>
    </TR>
    </TABLE>
    </FORM>
    </BODY>
    </HTML>

    Come potete notare, il form contiene un campo per l'immissione del nomeutente, uno per l'immissione della password, e un bottone per inviare i dati alla pagina login.asp che effettuerà il controllo sui dati inseriti.

    PAGINA DI AUTENTICAZIONE

    E' ora il momento cruciale dell'articolo, cioè la creazione della pagina che controlla nome utente e password e consente o meno l'accesso all'area riservata. Creiamo un file che chiemeremo login.asp, eccone il contenuto:

    <%
    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
    %>

    Lo script login.asp raccoglie nome_utente e password provenienti dalla form della home page e li memorizza nelle variabili nome_ut e pass. Da notare che gli eventuali apici (') immessi nella form vengono sostituiti con un doppio apice (''); questo è un passaggio molto importante e necessario se si vogliono evitare spiacevoli inconvenienti nella regolare esecuzione dello script; gli apici infatti possono causare degli errori nella corretta composizione della stringa sql che utilizzeremo per interrogare il database.
    Successivamente viene composta la stringa sql, che cerca nel database un record che abbia nome utente e password corrispondenti a quelli immessi nella form.
    Se il recordset risultante è vuoto, significa che nel database non è stata trovata la corrispondenza delle due variabili e quindi l'utente non è autenticato; nel caso contrario, l'utente è presente nel database, ed ha inserito la password corretta.
    Nel primo caso, il navigatore viene reindirizzato alla home page; nel secondo caso, invece, l'utente viene inviato alla pagina riservato.asp e, punto molto importante, viene creata una variabile di sessione chiamata Autenticato, a cui viene assegnata la stringa "OK". Questa variabile è importante, in quanto ad ogni accesso ad una pagina dell'area riservata (durante la medesima sessione), verrà verificata la sua presenza; nel caso essa non sia presente o non abbia valore "OK", il navigatore verrà reindirizzato alla pagina index.asp. Tutto ciò può apparire una futile precauzione, ma supponiamo che un navigatore "malintenzionato" venga a sapere che la pagina riservata del nostro sito ha come URL:

    http://www.miosito.com/riservato.asp

    A questo punto, per scavalcare la protezione, gli basterebbe andare direttamente a tale URL senza passare attraverso la home page del nostro sito, e la nostra "barriera" risulterebbe perfettamente inutile. Controllando invece, ad ogni pagina dell'area riservata, la presenza della variabile di sessione Autenticato, la protezione non potrà essere oltrepassata.
    In seguito è riportato il codice di 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>PAGINA RISERVATA</H1><BR>
    <H2>UTENTE AUTENTICATO</H2><BR></DIV>
    </BODY>
    </HTML>

    Questa sarà la sezione riservata del vostro sito; nella parte iniziale viene verificata la presenza della variabile di sessione che indica se l'utente ha effettuato il login o meno. Il resto della pagina potrà essere modificato secondo le vostre esigenze.

  2. #2
    L'avatar di bottomap
    bottomap non è in linea Moderatore Globale
    Post
    4,130
    Ciao,

    IIS è correttamente configurato sul tuo sito? Devi impostare le cose in modo che le richieste verso file *.asp passino dall'interprete ASP...
    In locale hai fatto prove? Funziona?

    Se l'hoster ti fornisce effettivamente il servizio asp (non tutti lo fanno, e credo praticamente nessuno tra i servizi di hosting gratuito), verifica che sia debitamente configurato e/o eventualmente controlla se hanno delle guide specifiche in merito.

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Il Crossposting è vietato dalla Netiquette.

    "Solo Puffin ti darà forza e grinta a volontà" - Charlie O'Brian
    "I gatti sono animali verso cui ho il massimo rispetto. I gatti e i non conformisti mi sembrano davvero i soli esseri in questo mondo che abbiano una coscienza pratica e attiva" - Jerome K. Jerome
    "Dun Dun DUNNN!" - Capitan Caos
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

  3. #3
    Luogo
    Lazio
    Post
    1,598
    Blogs
    21
    Quote Originariamente inviato da alex16578 Visualizza il messaggio
    Ciao ragazzi,
    ............
    sql = "SELECT ID FROM Utenti WHERE NOMEUTENTE='" &nome_ut&_
    "' AND PASSWORD='" &pass& "'"
    .....
    Il resto della pagina potrà essere modificato secondo le vostre esigenze.

    ehmm.... ti scansiglio di usare quel codice per il login
    perchè soggetto a Sql Injection.
    Cerca con google e troverai molto materiale in proposito

    HTH
    Ciao sspintux
    ------------------------------------------------------------

    O Santo Protettore dell'informatico quadratico medio, se puoi allontana da me questo cetriolo amaro!
    Azz! ... questo è un grande porck-around; potremmo addirittura farlo passare per una funzionalità avanzata

  4. #4
    alex16578 non è in linea Novello
    Post
    2

    Re

    ciao ragazzi,

    purtroppo il problema me lo fa anche in locale.. ne ho provato una miriade di script.. fanno tutti la stessa storia..
    per quanto riguarda l'hosting,
    ho uno spazio con aruba illimitato piattaforma linux, e tutti i servizi sono attivi..

    confido ancora nel vostro aiuto..

    grazie mille

  5. #5
    L'avatar di bottomap
    bottomap non è in linea Moderatore Globale
    Post
    4,130
    Ciao,

    Piattaforma linux??? Non mi risulta assolutamente che ASP sia supportato da Aruba su piattaforma linux (al limite su piattaforma windows).
    Anche in locale, l'IIS va configurato in modo da fargli usare l'interprete ASP.

    Credo il problema di fondo sia questo... ASP non è attivo "per default" e come qualsiasi linguaggio server side, deve essere integrato con il web server (sia esso apache, iis o quant'altro), altrimenti le richieste verso un file *.asp sono richeste generiche (*.qualcosa) e il browser le gestisce proponendo il download della risorsa.

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Il Crossposting è vietato dalla Netiquette.

    "Solo Puffin ti darà forza e grinta a volontà" - Charlie O'Brian
    "I gatti sono animali verso cui ho il massimo rispetto. I gatti e i non conformisti mi sembrano davvero i soli esseri in questo mondo che abbiano una coscienza pratica e attiva" - Jerome K. Jerome
    "Dun Dun DUNNN!" - Capitan Caos
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi