|
|
|
|
|
Dicas
|
|
ASP - Active Server Page (Miscelâneas)
|
|
|
Título da Dica: Controlo de Acessos por lista de domínios
|
|
|
|
Postada em 23/10/2003 por ^HEAVY-METAL^
Muitos Webmaster vivem com a preocupação diária do roubo de links, sejam estes para uso indevido de forms, downloads, mail, etc. Este script serve para fechar o site contra este tipo de abusos.
O script em si pode ser usado como um simples #include ou no topo da página que pretendemos defender. Basicamente recolhe a variável de servidor HTTP_REFERER e compara-a com uma lista de domínios que temos na file domvalidos.txt, se estiver lá então a leitura da página prossegue, senão o utilizador é redireccionado para a file saida.asp.
O script também faz o log dos domínios (+ a hora!) que estão a aceder a nossa página para a file log.txt, sabemos assim quem está a usar indevidamente a página. Devemos ter em atenção que temos de criar as files domvalidos.txt e log.txt, devendo a ser editada com os dominios que pretendemos deixar aceder a nossa página.
<% Response.Buffer = True
Dim fechadominio_fileObject, fechadominio_fileName, fechadominio_fileHandle, fechadominio_httpReferer, fechadominio_httpHost, fechadominio_hostOK
fechadominio_hostOK = false
' Recolha do URL de onde o user veio... fechadominio_httpReferer=Request.ServerVariables("HTTP_REFERER")
' Grava endereços das páginas de onde vieram os users, com a hora a que vieram... Set ObjectoFicheiro = CreateObject("Scripting.fileSystemObject") Set EscreveTexto = ObjectoFicheiro.OpenTextFile(Server.MapPath("log.txt"),8,True) EscreveTexto.WriteLine(Hour(Now())&"h"&Minute(Now())&"m"&" - "&Request.ServerVariables("HTTP_REFERER")) EscreveTexto.Close
IF (InStr(fechadominio_httpReferer, "//") <> 0 AND InStr(fechadominio_httpReferer, "//") <> Null) THEN fechadominio_httpHost = mid(fechadominio_httpReferer, InStr(fechadominio_httpReferer, "//")+2) END IF IF (InStr(fechadominio_httpReferer, "/") <> 0 AND InStr(fechadominio_httpReferer, "/") <> Null) THEN fechadominio_httpHost = left(fechadominio_httpHost, InStr(fechadominio_httpHost, "/")-1) END IF
' Abre domvalidos.txt... fechadominio_fileName = Server.MapPath(".")&"\domvalidos.txt" SET fechadominio_fileObject = Server.CreateObject("Scripting.FileSystemObject") SET fechadominio_fileHandle = fechadominio_fileObject.OpenTextFile(fechadominio_fileName, 1, FALSE, FALSE)
' Ciclo de check para verificar se o dominio está dentro dos válidos... WHILE fechadominio_fileHandle.AtEndOfStream <> True fechadominio_nextLine=fechadominio_fileHandle.ReadLine IF (LCase(fechadominio_httpHost) = LCase(fechadominio_nextLine)) THEN fechadominio_hostOK = true END IF WEND
' Fecho da file... fechadominio_fileHandle.Close SET fechadominio_fileHandle = Nothing SET fechadominio_fileObject = Nothing
' Se não foi encontrado um dominio válido então o user é redirigido para saida.asp (pode ser para qualquer outra ao nosso gosto)... IF NOT fechadominio_hostOK THEN Response.Clear Response.Redirect("saida.asp") END IF %>
T+,
|
|
|
|
|