ตัวแปร 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.ส่ง()
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);
curl_close ($ch);
PHP (อย่าติดตั้ง curl และใช้ sock)
$server = 'www.devdao.com';
$host = 'www.devdao.com';
$target = '/xxx.asp';
$ผู้อ้างอิง = 'http://www.devdao.com/'; // ผู้อ้างอิง
$ พอร์ต = 80;
$fp = fsockopen($เซิร์ฟเวอร์, $พอร์ต, $errno, $errstr, 30);
ถ้า (!$fp)
-
echo "$errstr ($errno)<br />n";
-
อื่น
-
$ออก = "รับ $เป้าหมาย HTTP/1.1rn";
$out .= "โฮสต์: $hostrn";
$out .= "คุกกี้: ASPSESSIONIDSQTBQSDA=DFCAPKLBBFICDAFMHNKIGKEGrn";
$out .= "ผู้อ้างอิง: $ผู้อ้างอิงrn";
$out .= "การเชื่อมต่อ: ปิดrnrn";
fwrite($fp, $ออก);
ในขณะที่ (!feof($fp))
-
เสียงสะท้อน fgets($fp, 128);
-
fclose($fp);
-
VB.NET/C#.NET
หรี่ oXMLHttp เป็น MSXML2.XMLHTTP30 = ใหม่ MSXML2.XMLHTTP30()
หรือ
MSXML2.XMLHTTP30 oXMLHttp = ใหม่ MSXML2.XMLHTTP30();
oXMLHttp.open(....
oXMLHttp.setRequestHeader(...
oXMLHttp.send(..
จาวาสคริปต์
xmlHttp.setRequestHeader("ผู้อ้างอิง", " http://URL");// ???ฮ่าฮ่า~ปลอม~
ไม่รองรับ JS^_^
หลักการคือ sock สร้างส่วนหัว http เพื่อส่งข้อมูล สามารถใช้ภาษาอื่นๆ เช่น Perl ได้ด้วย
ในปัจจุบันวิธีที่ง่ายที่สุดในการป้องกันผู้อ้างอิงที่ถูกปลอมแปลงคือการใช้รหัสยืนยัน (เซสชัน)
ขณะนี้มีบริษัทการค้าบางแห่งที่สามารถป้องกันซอฟต์แวร์ฮอตลิงก์ได้ เช่น UUDOG, linkgate, VirtualWall ฯลฯ ซึ่งทั้งหมดนี้ได้พัฒนา dll สำหรับใช้กับ IIS
บางตัวใช้การตรวจสอบคุกกี้และการควบคุมเธรด และบางตัวสามารถสร้างชื่อไฟล์แบบสุ่มแล้วจึงเขียน URL ใหม่ วิธีการบางอย่างสามารถบรรลุผลลัพธ์ที่ดีได้อย่างแน่นอน
อย่างไรก็ตาม มีวิธีแก้ไขเคล็ดลับเล็กๆ น้อยๆ เหล่านี้อยู่เสมอ