変数 HTTP-REFERER の信頼性はますます低くなり、偽造される可能性があります。
偽装する方法は次のとおりです:
ASP:
dim 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 =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);
カール_クローズ ($ch);
PHP (curl をインストールせず、sock を使用してください)
$server = 'www.devdao.com';
$host = 'www.devdao.com';
$target = '/xxx.asp';
$referer = 'http://www.devdao.com/' // リファラー
$ポート = 80;
$fp = fsockopen($server, $port, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />n";
}
それ以外
{
$out = "GET $target HTTP/1.1rn";
$out .= "ホスト: $hostrn";
$out .= "Cookie: ASPSESSIONIDSQTBQSDA=DFCAPKLBBBFICDAFMHNKIGKEGrn";
$out .= "リファラー: $refererrn";
$out .= "接続: 閉じるrnrn";
fwrite($fp, $out);
その間 (!feof($fp))
{
エコー fgets($fp, 128);
}
fclose($fp);
}
VB.NET/C#.NET
Dim oXMLHttp As MSXML2.XMLHTTP30 = 新しい MSXML2.XMLHTTP30()
または
MSXML2.XMLHTTP30 oXMLHttp = 新しい MSXML2.XMLHTTP30();
oXMLHttp.open(....
oXMLHttp.setRequestHeader(...
oXMLHttp.send(..
JavaScript
xmlHttp.setRequestHeader("Referer", " http://URL");// ???はは〜偽物〜
JSはサポートされていません^_^
原則として、sock はデータを送信するために http ヘッダーを構築します。 Perl などの他の言語も使用できます。
現在、偽造されたリファラーを防御する最も簡単な方法は、検証コード (セッション) を使用することです。
現在、ホットリンク ソフトウェア (UUDOG、linkgate、VirtualWall など) を防止できる商用企業がいくつかあり、それらはすべて IIS で使用する DLL を開発しています。
Cookie 検証とスレッド制御を使用するものや、ファイル名をランダムに生成して URL 書き換えを実行できるものもあります。いくつかの方法では確かに良い結果が得られます
が、これらの些細なトリックを突破する方法は常に存在します。