ผู้อ้างอิงถูกส่งผ่านจาก HTTPS ไปยัง HTTP ในบางกรณี ... อย่างไร


17

ในทางทฤษฎีแล้วเบราว์เซอร์ไม่ส่งต่อข้อมูลผู้อ้างอิงจาก HTTPS ไปยังไซต์ HTTP และจากประสบการณ์ของฉันสิ่งนี้เป็นจริงเสมอ แต่ฉันเพิ่งพบข้อยกเว้นและฉันต้องการที่จะเข้าใจว่าทำไมมันจึงใช้งานได้ดังนั้นฉันจึงสามารถใช้มันได้เช่นกัน

ค้นหา "ผู้อ้างอิงของฉันคืออะไร" ในhttps://www.google.ca/
เช่น: https://www.google.ca/search?q=what+is+my+referer

มีเว็บไซต์ไม่กี่แห่งที่จะแสดงผู้อ้างอิง พวกเขาทั้งหมดดูเหมือนจะ "ทำงาน" เมื่อพวกเขาไม่ควร ตัวอย่างเช่นคลิก www.whatismyreferer.com อันใดอันหนึ่ง ฉันเข้าใจ:

 Your referer:
 https://www.google.ca/

โปรดทราบว่าบางครั้งฉันได้รับ "ไม่มีผู้อ้างอิง" เป็นผล ย้อนกลับไปและคลิกที่ลิงค์อีกครั้งและมันจะ "ทำงาน" ในครั้งต่อไป

สิ่งนี้ไม่ควรเกิดขึ้น www.whatismyreferer.com เป็นเว็บไซต์ที่ไม่ใช่ HTTPS ไม่ควรผ่านส่วนหัวของผู้อ้างอิง แต่เป็น

เกิดอะไรขึ้นที่นี่และฉันจะทำสิ่งเดียวกันจากไซต์ HTTPS ของฉันไปยังไซต์ HTTP ที่ฉันกำลังลิงก์ไปได้อย่างไร


1
ฉันควรทราบว่าฉันใช้ Chrome บน Windows หากที่ทำให้แตกต่างใด ๆ (เช่น: ถ้าคนอื่น ๆ จะเห็นผลแตกต่างกันในเบราว์เซอร์ที่แตกต่างกัน / ระบบปฏิบัติการ)
ravisorg

พฤติกรรมนี้ไม่เป็นความจริงอีกต่อไป
Flimm

@ravisorg ไม่ควรโพสต์นี้ใน S / O แทนใช่ไหม
Pacerier

ตอนนี้ Google ส่งคืนลิงก์ HTTPS ดังนั้นการทดสอบจึงไม่ถูกต้องอีกต่อไป :-(
Silas S. Brown

คำตอบ:


23

ดูเหมือนว่าเป็นเพราะ<meta>ส่วนหัวใหม่ที่ Google ใช้:

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

ข้อมูลจำเพาะ: https://w3c.github.io/webappsec-referrer-policy/

ปัจจุบันมีเพียงเบราว์เซอร์บางตัวเท่านั้นที่รองรับอย่างเต็มที่ดังนั้นจึงไม่ใช่โซลูชันที่สมบูรณ์ แต่เป็นการเริ่มต้นอย่างแน่นอน!


4

นี่คือพฤติกรรมมาตรฐาน

https://tools.ietf.org/html/rfc2616#section-15.1.3พูดว่า

ลูกค้าไม่ควรรวมเขตข้อมูลส่วนหัวของผู้อ้างอิงในคำขอ HTTP (ไม่ปลอดภัย) หากหน้าการอ้างอิงถูกถ่ายโอนด้วยโปรโตคอลที่ปลอดภัย

ดังนั้นหากลูกค้าของคุณกำลังทำเช่นนั้นมันเป็นการละเมิดมาตรฐาน

จากนั้นอีกครั้ง Google เป็นมาตรฐานและพวกเขาสามารถทำสิ่งที่พวกเขาต้องการ :-)


1
"ควร" หมายถึงตัวเลือกใช่ไหม
Pacerier

ใช่ฉันจะคิดอย่างนั้นไม่จำเป็น
johnshen64

4
เนื่องจากเป็นตัวเลือกทำไมคุณถึงพูดว่ามันละเมิดมาตรฐาน?
Pacerier

1
ตอนนี้ 2616 ล้าสมัยแล้ว 7231 ส่วน 5.5.2กล่าวว่า "ตัวแทนผู้ใช้จะต้องไม่ส่งเขตข้อมูลส่วนหัวของผู้อ้างอิงในคำขอ HTTP ที่ไม่ปลอดภัยหากได้รับหน้าอ้างอิงด้วยโปรโตคอลที่ปลอดภัย" ไม่ได้ระบุเอเจนต์ที่ควรทำสำหรับการร้องขอ HTTP ที่ปลอดภัย
ปีเตอร์

1

สิ่งนี้ดูเหมือนจะเป็นสิ่งที่จาวาสคริปต์ในหน้า google กำลังทำอยู่ ฉันไม่เห็นมันใน firefox เมื่อเปิดใช้งาน noscript และหยุดเห็นมันใน Chrome บน Windows หากฉันปิดการใช้งานจาวาสคริปต์ ฉันไม่รู้ว่าอะไรเป็นพิเศษเพราะฉันไม่ได้ขุดลึกไปกว่านั้น


ไม่ไม่ใช่จาวาสคริปต์ที่เกี่ยวข้อง (ฉันคิดถึงเรื่องนั้นและลองดูก่อนถาม) ดูเหมือนว่าเป็นแท็ก <meta> ใหม่ที่ Chrome กำลังติดตาม
ravisorg

การปิดใช้งานจาวาสคริปต์ช่วยป้องกันผู้อ้างอิงจากการทำงานที่นี่ ฉันไม่รู้ อาจมีมากกว่าหนึ่งสิ่งที่เกี่ยวข้องที่นี่
Etan Reisner

นั่นเป็นเรื่องที่น่าสนใจมาก - ฉันจะทดลองกับมันมากขึ้น ขอบคุณสำหรับความคิดเห็น!
ravisorg

0

<meta> ชื่อแอตทริบิวต์ของฉลากมีกฎผู้อ้างอิงใหม่ผู้อ้างอิงที่ควบคุมเนื้อหาของส่วนหัว HTTP Referer HTTP ที่แนบมากับคำขอใด ๆ ที่ส่งมาจากเอกสารนี้

สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบที่นี่: นโยบายผู้อ้างอิงของ RFC


นี่เป็นเช่นเดียวกับคำตอบที่ได้รับการยอมรับแล้ว!
DocRoot

-2

เป็นเพราะเมื่อคุณคลิกที่ลิงค์คุณจะถูกเปลี่ยนเส้นทางจากhttps://www.google .... ไปยังhttp://www.google ... จากนั้นคุณจะถูกเปลี่ยนเส้นทางไปยัง www.whatismyreferer.com

และอย่างที่คุณพูดระหว่างเว็บไซต์ http ผู้อ้างอิงจะถูกส่ง

คุณสามารถตรวจสอบด้วยส่วนขยายของ Firefox


2
คุณคาดเดาหรือคุณกำลังคิดเรื่องนั้นจริงหรือ? เพราะฉันไม่เห็นสิ่งที่เกิดขึ้นในตอนท้ายของฉัน การคลิกที่ลิงก์จะส่งคุณไปยังการเปลี่ยนเส้นทาง HTTPS ในgoogle.caจากนั้นไปยังโดเมนปลายทาง ฉันไม่เคยกด URL ที่ไม่ใช่ https จนกว่าจะถึง (เช่น) www.whatismyreferer.com นอกจากนี้โปรดทราบว่าผู้อ้างอิงระบุว่าhttpS://www.google.caโดยเฉพาะไม่ใช่ http
ravisorg

ใช่คำตอบนี้ดูเหมือนจะไม่ถูกต้อง
ceejayoz

นี่คือการถ่ายโอนข้อมูลของส่วนหัว http: pastebin.com/Y1HJyJ87 ฉันเพิ่งถอดทรัพยากรดาวน์โหลด (เช่น google แนะนำ & สิ่ง ajax อื่น ๆ ) และข้อมูลที่เกี่ยวข้องกับคุกกี้ แต่ฉันต้องยอมรับว่าเมื่อฉันพยายามหลายครั้ง google ทำงานแตกต่างกัน ... บางครั้งใช้ https เท่านั้นดังนั้นไม่อนุญาตให้เว็บไซต์แสดงผู้อ้างอิงของฉัน เพียงลองด้วยตัวเอง
user2299634
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.