HTTP-REFERER 변수는 점점 더 신뢰할 수 없게 되었으며 위조될 수 있습니다.
위조하는 방법은 다음과 같습니다.
ASP:
희미한 http
set http=server.createobject("MSXML2.XMLHTTP") '//MSXML2.serverXMLHTTP도 사용할 수 있습니다.
Http.open "GET", URL, false
Http.setRequestHeader "리퍼러"," http://www.devdao.com/ "
Http.send()
PHP(curl이 설치된 경우):
$ch = cur_init();
cur_setopt($ch, CURLOPT_URL, " http://www.devdao.com/xxx.asp ");
cur_setopt($ch, CURLOPT_REFERER, " http://www.devdao.com/ ");
컬_exec($ch);
컬_닫기($ch);
PHP (curl을 설치하지 않고 양말을 사용함)
$server = 'www.devdao.com';
$host = 'www.devdao.com';
$target = '/xxx.asp';
$referer = 'http://www.devdao.com/' // 추천자
$ 포트 = 80;
$fp = fsockopen($server, $port, $errno, $errstr, 30);
만약 (!$fp)
{
echo "$errstr ($errno)<br />n";
}
또 다른
{
$out = "$target HTTP/1.1rn 받기";
$out .= "호스트: $hostrn";
$out .= "쿠키: ASPSESSIONIDSQTBQSDA=DFCAPKLBBFICDAFMHNKIGKEGrn";
$out .= "참조자: $refererrn";
$out .= "연결: 닫기rnrn";
fwrite($fp, $out);
동안(!feof($fp))
{
echo fgets($fp, 128);
}
fclose($fp);
}
VB.NET/C#.NET
Dim oXMLHttp As MSXML2.XMLHTTP30 = 새 MSXML2.XMLHTTP30()
또는
MSXML2.XMLHTTP30 oXMLHttp = new MSXML2.XMLHTTP30();
oXMLHttp.open(....
oXMLHttp.setRequestHeader(...
oXMLHttp.send(..
자바스크립트
xmlHttp.setRequestHeader("Referer", " http://URL");// ???하하~가짜~
JS는 지원되지 않습니다^_^
원칙은 sock이 데이터를 보내기 위해 http 헤더를 구성한다는 것입니다. Perl과 같은 다른 언어도 사용할 수 있습니다.
현재 위조된 리퍼러를 방어하는 가장 간단한 방법은 확인 코드(세션)를 사용하는 것입니다.
현재 UUDOG, linkgate, VirtualWall 등과 같은 핫링크 소프트웨어를 방지할 수 있는 일부 상용 회사가 있으며 이들 모두 IIS에서 사용하기 위한 dll을 개발했습니다.
일부는 쿠키 확인 및 스레드 제어를 사용하고 일부는 임의로 파일 이름을 생성한 다음 URL 재작성을 수행할 수 있습니다. 일부 방법은 실제로 좋은 결과를 얻을 수 있지만
이러한 사소한 트릭을 해독할 수 있는 방법은 항상 있습니다.