HTTP_REFERER จะว่างเปล่าในกรณีใด


163

ฉันรู้ว่าเป็นไปได้ที่จะได้รับ HTTP_REFERER ว่างเปล่า สิ่งนี้จะเกิดขึ้นภายใต้สถานการณ์ใดบ้าง? หากฉันได้รับอันที่ว่างเปล่าหมายความว่าผู้ใช้เปลี่ยนหรือไม่ การรับอันที่ว่างเปล่าเหมือนกับการเอาอันว่างเปล่ามาใช่ไหม? และภายใต้สถานการณ์ใดที่ฉันจะได้รับเช่นกัน?


8
เมื่อลูกค้าไม่ได้ส่ง
Ignacio Vazquez-Abrams

คำตอบ:


277

มันจะ / อาจว่างเปล่าเมื่อ enduser

  • ป้อน URL ของเว็บไซต์ในแถบที่อยู่ของเบราว์เซอร์
  • เยี่ยมชมเว็บไซต์โดยบุ๊คมาร์คที่ดูแลโดยเบราว์เซอร์
  • เยี่ยมชมเว็บไซต์เป็นหน้าแรกในหน้าต่าง / แท็บ
  • คลิกลิงก์ในแอปพลิเคชันภายนอก
  • เปลี่ยนจาก https URL เป็น http URL
  • เปลี่ยนจาก https URL เป็น https อื่น
  • มีการติดตั้งซอฟต์แวร์ความปลอดภัย (antivirus / firewall / etc) ซึ่งแถบผู้อ้างอิงจากการร้องขอทั้งหมด
  • อยู่หลังพร็อกซีซึ่งตัดการอ้างอิงจากคำขอทั้งหมด
  • เข้าเยี่ยมชมเว็บไซต์โดยทางโปรแกรม (เช่นcurl ) โดยไม่ต้องตั้งค่าส่วนหัวของผู้อ้างอิง (searchbots!)

32
คุณอาจต้องการเพิ่ม "เมื่อผู้ใช้เปลี่ยนจากหน้าปลอดภัย (HTTPS) เป็นหน้าเว็บที่ไม่ปลอดภัย"
จอห์นเลือก

4
"เยี่ยมชมเว็บไซต์เป็นหน้าแรกในหน้าต่าง / แท็บ" แม้ว่ามันจะเป็นโดยการคลิกที่ลิงค์และเปิดในหน้าต่าง / แท็บใหม่ ?? คุณแน่ใจไหม? นั่นจะเป็นพฤติกรรมที่ผิดปกติของเบราว์เซอร์
matteo

นอกจากนี้ดูที่นี่stackoverflow.com/questions/21922143/…สำหรับข้อ
ยกเว้น

4
"เปลี่ยนจาก https URL เป็น https อื่น" คุณแน่ใจเกี่ยวกับเรื่องนี้? : \
Oscar Mederos

5
ตามค่าเริ่มต้นการสลับจาก HTTPS URL ไปเป็น HTTPS URL อื่นจะเป็นการตั้งค่าผู้อ้างอิงแบบเต็ม อย่างไรก็ตามนโยบายเริ่มต้นนี้สามารถแทนที่ได้ w3.org/TR/referrer-policy
Dhaval Kapil

34

HTTP_REFERER - ส่งจากเบราว์เซอร์โดยระบุหน้าสุดท้ายที่เบราว์เซอร์ดู!

หากคุณเชื่อถือ [HTTP_REFERER] ด้วยเหตุผลใดก็ตามที่สำคัญคุณไม่ควรทำเพราะสามารถปลอมได้ง่าย:

  1. เบราว์เซอร์บางตัว จำกัด การเข้าถึงไม่อนุญาตให้ส่งผ่าน HTTP_REFERER
  2. พิมพ์ที่อยู่ในแถบที่อยู่จะไม่ผ่าน HTTP_REFERER
  3. เปิดหน้าต่างเบราว์เซอร์ใหม่จะไม่ผ่าน HTTP_REFERER เนื่องจาก HTTP_REFERER = NULL
  4. มีส่วนเสริมของเบราว์เซอร์บางส่วนที่ปิดกั้นเพื่อความเป็นส่วนตัว ไฟร์วอลล์และ AV บางตัวทำเพื่อ

ลองใช้ส่วนขยายของ Firefox นี้คุณจะสามารถตั้งค่าส่วนหัวที่คุณต้องการ:

@Master of Celebration:

Firefox:

ส่วนขยาย: refspoof , refontrol , แก้ไขส่วนหัว , ไม่มีผู้อ้างอิง

ปิดการใช้งานอย่างสมบูรณ์:ตัวเลือกนี้มีอยู่ใน about: config ภายใต้ "network.http.sendRefererHeader" และคุณต้องการตั้งค่านี้เป็น 0 เพื่อปิดการส่งต่อผู้อ้างอิง

Google chrome / Chromium:

ส่วนขยาย: noref , spoofy , noreferrer ภายนอก

ปิดการใช้งานอย่างสมบูรณ์: Chnage ~ / .config / google-chrome / Default / Preferences หรือ ~ / .config / chromium / Default / Preferences และตั้งค่านี้:

{
   ...
   "enable_referrers": false,
   ...
}

หรือเพียงเพิ่ม - ไม่มีผู้อ้างอิงไปยังทางลัดหรือใน cli:

google-chrome --no-referrers

Opera:

ปิดการใช้งานอย่างสมบูรณ์:การตั้งค่า> การตั้งค่า> ขั้นสูง> เครือข่ายและยกเลิกการเลือก "ส่งข้อมูลผู้อ้างอิง"

บริการเว็บปลอมแปลง:

http://referer.us/

พร็อกซีการกรองแบบสแตนด์อโลน (หลอกส่วนหัวใด ๆ ):

Privoxy

การปลอมแปลง http_referer เมื่อใช้ wget

'--referer = URL'

การปลอมแปลง http_referer เมื่อใช้ curl

-e, - ผู้อ้างอิง

การปลอมแปลง http_referer ด้วย telnet

telnet www.yoursite.com 80 (press return)
GET /index.html HTTP/1.0 (press return)
Referer: http://www.hah-hah.com (press return)
(press return again)

Tamper Dataเป็นส่วนเสริมของ Firefox อีกอย่างที่คุ้มค่าหากคุณต้องการเปลี่ยนการอ้างอิงค่า
Chris Hepner

ฉันพยายามอย่างหนักที่จะจำชื่อมัน แต่ความทรงจำของฉันทำให้ฉันทรยศ ขอบคุณ :)
ThatGuy

@nix Some browsers limit access to not allow HTTP_REFERER to be passedคุณช่วยกรุณาตั้งชื่อตัวอย่างให้กับเบราว์เซอร์และ / หรือส่วนขยายดังกล่าวได้หรือไม่?
Master of Celebration

@MasterofCelebration ได้เพิ่มวิธีในการหลอก http_referer ในคำตอบของฉัน
ThatGuy

อย่าใช้ Referer.us เพื่อหลอก / ซ่อนผู้อ้างอิงของคุณ! มันไม่ทำงานและรั่วไหลข้อมูลของคุณ บริการที่ใช้งานได้เฉพาะในขณะนี้คือบริการผู้อ้างอิงฟรีที่ซ่อนตัวนี้
Brian Smith

9

รายการของ BalusC นั้นมั่นคง อีกวิธีหนึ่งที่ช่องนี้มักจะปรากฏว่างเปล่าคือเมื่อผู้ใช้อยู่หลังพร็อกซีเซิร์ฟเวอร์ สิ่งนี้คล้ายกับการอยู่หลังไฟร์วอลล์ แต่แตกต่างกันเล็กน้อยดังนั้นฉันจึงต้องการพูดถึงเพื่อความสมบูรณ์


8

นอกจากนี้ยังจะว่างเปล่าหากใช้แบบร่างมาตรฐานนโยบายผู้อ้างอิงใหม่เพื่อป้องกันไม่ให้ส่วนหัวของผู้อ้างอิงถูกส่งไปยังจุดเริ่มต้นคำขอ ตัวอย่าง:

<meta name="referrer" content="none">

แม้ว่า Chrome และ Firefox ได้นำนโยบายผู้อ้างอิงเวอร์ชันร่างมาใช้แล้ว แต่คุณควรระวังด้วยเช่นกันเพราะตัวอย่างเช่น Chrome คาดหวังno-referrerแทนที่จะเป็นnone(และฉันเคยเห็นneverที่ไหนซักแห่ง)


ตารางความเข้ากันได้ของเบราว์เซอร์: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
djvg

0

ฉันพบว่าการใช้งานผู้อ้างอิงเบราว์เซอร์ไม่สอดคล้องกันจริงๆ

ตัวอย่างเช่นองค์ประกอบจุดยึดที่มีแอตทริบิวต์ "ดาวน์โหลด" ทำงานตามที่คาดไว้ใน Safari และส่งผู้อ้างอิง แต่ใน Chrome ผู้อ้างอิงจะว่างเปล่าหรือ "-" ในบันทึกของเว็บเซิร์ฟเวอร์

<a href="http://foo.com/foo" download="bar">click to download</a>

ใช้งานไม่ได้ใน Chrome - ไม่ได้ส่งผู้อ้างอิง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.