asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 13551
ASPCode.it - Store

  > > Tips

Siti con Frame e HTTP_REFERER
di Mattia Richetto

Data di pubblicazione: 23/01/2003        Voto della community: 3,00 (Votanti: 5)

Un'intestazione HTTP Ŕ una singola informazione inviata dal client al server quando viene richiesta una pagina, oppure dal server al client quando si risponde alla richiesta di una pagina.
L'intestazione HTTP presa in esame (e utilizzata in questa tip), Ŕ l'intestazione REFERER. L'informazione presente nell'HTTP_REFERER Ŕ l'URL completo della pagina Web contenente il collegamento ipertestuale usato per raggiungere la pagina ASP (attualmente) in esecuzione.
Grazie a questa proprietÓ, quindi, si pu˛ sapere quale percorso Ŕ stato seguito per accedere ad una determinata pagina Web. In un sito con i frame, quest'informazione pu˛ essere utilizzata per evitare che si possa accedere ad una pagina appartenente ad un frame set senza che quest'ultimo venga aperto con la sua corretta struttura (problema che si riscontra spesso nell'apertura di pagine appartenenti a un frameset dopo una ricerca su motore di ricerca). In poche parole, se abbiamo intenzione di realizzare un sito con frame, possiamo evitare che un visitatore possa visualizzare una qualunque pagina del frameset come pagina a se stante. Le nostre pagine riconosceranno (grazie all'HTTP_REFERER) la provenienza della visita e, se il link utilizzato non permette la visualizzazione del frameset, reindireizzaranno l'utente.

Creiamo il frame set (che chiameremo in seguito per comoditÓ index.htm), un menu (menu.htm) appartenente al frame set stesso, e due pagine (home.asp e choice_one.asp) che rappresentano due sezioni del nostro sito; tali pagine effettueranno il controllo dell'intestazione REFERER.
Il percorso logico seguito Ŕ: lettura delle intestazioni HTTP; se la pagina di provenienza Ŕ considerata "scorretta" reindirizzare l'utente alla index.asp, viceversa (se la pagina di provenienza Ŕ considerata "corretta") continuare con l'esecuzione della pagina.

<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<%
Dim strReferer
strReferer = Request.ServerVariables ("HTTP_REFERER")
If (Right(strReferer, 9) <> "index.htm") and _
  (Right(strReferer, 8) <> "menu.htm") then
    Response.Redirect("index.htm")
Else
%>
<html>

...tutto il contenuto della pagina...

</html>
<% End If %>

Nella quinta riga viene assegnata alla variabile stringa strReferer l'intestazione HTTP_REFERER, quella contenente appunto il link completo della pagina Web contenente il collegamento ipertestuale usato per raggiungere la pagina home.asp.
Passiamo ora alle righe successive, dove avviene la manipolazione della stringa e il confronto di quest'ultima con le pagine ritenute "sicure" (quelle attraverso le quali Ŕ possibile visualizzare correttamente il contenuto del sito). Le funzioni stringa Right considerano, rispettivamente, i 9 e 8 caratteri, partendo appunto da destra dell'intestazione HTTP_REFERER e li confrontano con le stringhe delle due pagine "lecite"; se entrambe le disuguaglianze sono verificate significa che la nostra pagina di provenienza non ci permette di visualizzare correttamente il frame set. In tal caso verremo reindirizzati alla prima pagina del sito (index.htm).
Per "proteggere" tutte le pagine come abbiamo fatto con la home.ap, basterÓ copiare le righe prima del tag <html> e la riga dopo il tag </html>.

Di seguito Ŕ possibile scaricare lo .zip con i file relativi allo script presentato:




Utenti connessi: 13551