NOTÍCIA

Controle de acessos por lista de domínios

Todos nós temos uma preocupação
diária com o 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. Muito
útil também para seleção
de clientes e usuários.

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,
caso contrário o usuário é redirecionado para
a file saida.asp. 

O script também faz o log dos domínios (+ a hora!) que
estão acessando a página para o file log.txt. Sabemos
assim quem está usando indevidamente a página.

Devemos ter a atenção que temos de criar
os files domvalidos.txt e log.txt, devendo ser editada
com os domínios que pretendemos deixar acessar 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 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 domínio 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

‘ Fechamento do file…
fechadominio_fileHandle.Close
SET fechadominio_fileHandle = Nothing
SET fechadominio_fileObject = Nothing

‘ Se não foi encontrado um domínio válido então o
user é redirecionado para saida.asp (pode ser para qualquer
outra ao nosso gosto)…

IF NOT fechadominio_hostOK THEN
Response.Clear
Response.Redirect("saida.asp")
END IF
%>

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Mais de Redação iMasters
Ver perfil →