A variável HTTP-REFERER tornou-se cada vez menos confiável e pode ser falsificada.
Veja como fingir:
ASP:
dim http
set http=server.createobject("MSXML2.XMLHTTP") '//MSXML2.serverXMLHTTP também pode ser usado
Http.open "GET",url,falso
Http.setRequestHeader "Referenciador"," http://www.devdao.com/ "
http.send()
PHP (desde que o curl esteja instalado):
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, " http://www.devdao.com/xxx.asp ");
curl_setopt ($ch, CURLOPT_REFERER, " http://www.devdao.com/ ");
curl_exec ($ch);
curl_close ($ch);
PHP (não instale curl e use sock)
$server = 'www.devdao.com';
$host = 'www.devdao.com';
$target = '/xxx.asp';
$referente = 'http://www.devdao.com/'; //Referente
$porta = 80;
$fp = fsockopen($servidor, $porta, $errno, $errstr, 30);
se (!$fp)
{
echo "$errstr ($errno)<br />n";
}
outro
{
$out = "OBTER $alvo HTTP/1.1rn";
$out.= "Host: $hostrn";
$out .= "Cookie: ASPSESSIONIDSQTBQSDA=DFCAPKLBBFICDAFMHNKIGKEGrn";
$out .= "Referenciador: $referenciadorrn";
$out .= "Conexão: Fecharrnrn";
fwrite($fp, $out);
enquanto (!feof($fp))
{
echo fgets($fp, 128);
}
fclose($fp);
}
VB.NET/C#.NET
Dim oXMLHttp como MSXML2.XMLHTTP30 = Novo MSXML2.XMLHTTP30()
ou
MSXML2.XMLHTTP30 oXMLHttp = new MSXML2.XMLHTTP30();
oXMLHttp.open(....
oXMLHttp.setRequestHeader(...
oXMLHttp.send(..
javascript
xmlHttp.setRequestHeader("Referer", " http://URL");// ???Haha~fake~
JS não é compatível ^_^
O princípio é que sock constrói o cabeçalho http para enviar dados. Outras linguagens como perl também podem ser utilizadas.
Atualmente, a forma mais simples de se defender contra referenciadores forjados é utilizar códigos de verificação (Sessão).
Existem agora algumas empresas comerciais que podem impedir software de hotlinking, como UUDOG, linkgate, VirtualWall, etc., todas as quais desenvolveram dlls para uso no IIS.
Alguns usam verificação de cookies e controle de thread, e alguns podem gerar nomes de arquivos aleatoriamente e, em seguida, reescrever URLs. Alguns métodos podem realmente alcançar bons resultados.
No entanto, sempre há uma maneira de decifrar esses truques triviais.