ฉันจะส่งต่อส่วนหัวของผู้อ้างอิงจากโดเมน https ไปยังโดเมน http ได้อย่างไร


12

เว็บไซต์ของฉันคือ https 100% ฉันมีลิงก์ไปยังโดเมน http อื่น ๆ ส่วนหัวของผู้อ้างอิงไม่ได้ถูกตั้งค่าเมื่อเชื่อมโยงจากหน้า https ไปยังหน้า http จากhttp://en.wikipedia.org/wiki/HTTP_referrer

หากเข้าถึงเว็บไซต์ได้จากการเชื่อมต่อ HTTP Secure (HTTPS) และลิงค์ชี้ไปที่ใดก็ได้ยกเว้นตำแหน่งที่ปลอดภัยอื่นฟิลด์ผู้อ้างอิงจะไม่ถูกส่ง

ฉันต้องการให้โดเมนอื่นสามารถเห็นผู้อ้างอิงเพื่อให้พวกเขารู้ว่าทราฟฟิกมาจากโดเมนของฉัน มีวิธีบังคับส่วนหัวนี้หรือมีวิธีอื่นหรือไม่

ปรับปรุง

ฉันได้ทำการทดสอบขั้นพื้นฐานโดยใช้การเปลี่ยนเส้นทาง:

http page  -- link to http  --> 301 redirect --> http page = referrer intact
https page -- link to https --> 301 redirect --> http page = referrer blank
https page -- link to http  --> 301 redirect --> http page = referrer blank
https page -- link to http  --> 302 redirect --> http page = referrer blank

ผู้อ้างอิงหายไปเมื่อเชื่อมโยงจากหน้า https ไปยังหน้าเปลี่ยนเส้นทาง http ในโดเมนของฉันเอง ดังนั้นจึงไม่มีผู้อ้างอิงในการเปลี่ยนเส้นทาง


Originควรจะเหมือนเดิมอาจไม่พอดีกับกรณีการใช้งานของคุณแม้ว่า
Pacerier

คำตอบ:




6

น่าเศร้าที่คุณไม่สามารถอ้างอิง HTTPS ไปยังไซต์ที่ใช้ HTTP อย่างไรก็ตามคุณสามารถทำ HTTPS เป็น HTTPS หรือ HTTP กับ HTTPS

แหล่งที่มา

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

วิธีแก้ไขคือใช้สคริปต์เปลี่ยนเส้นทางภายในที่แทนที่จะกำหนดทิศทางการเชื่อมโยงไปยังผู้เยี่ยมชมบน HTTPS ที่คุณเปลี่ยนเส้นทางไปยัง HTTP จากนั้นจะเปลี่ยนเส้นทางออก

ตัวอย่างเช่น:

<a href="http://www.yours.com/out.php?www.other.com">www.outboundsite.com</a> แต่สิ่งนี้จะไม่ใช้ผู้อ้างอิงดั้งเดิม

ความเป็นไปได้อีกอย่างหนึ่งคือการใช้trackbacksแทนที่จะอ้างอิงและเท่าที่ฉันรู้ว่ามันใช้งานได้ใน HTTPS


การทดสอบของฉันระบุว่าการใช้การเปลี่ยนเส้นทางไม่ทำงาน (ดูอัปเดต)
แคร็กเกอร์

ใช้ trackbacks หรือแพ้ HTTPS;)
Simon Hayter

1
@bybe คำตอบนี้ต้องการการแก้ไข ดูserverfault.com/a/520603/87017และwebmasters.stackexchange.com/a/71331/7654
Pacerier

4

ฉันสามารถตั้งค่าลิงก์จากหน้า HTTPS ไปยังหน้า HTTP ในโดเมนอื่นและยังคงผ่าน URL ของหน้าแรกเป็นผู้อ้างอิงโดยใช้เทคนิคต่อไปนี้

คำนิยาม

หน้าต้นทาง : หน้า HTTPS ที่มีลิงก์ไปยังหน้าปลายทางที่โฮสต์ HTTP ในตัวอย่างนี้:https://example1.com/origin.html

หน้าปลายทาง : หน้า HTTP ที่มีสิทธิ์เข้าถึงผู้อ้างอิงของหน้าต้นทาง ในตัวอย่างนี้:http://example2.com/destination.html

แผนพื้นฐาน

สิ่งนี้มีผลในการทำให้การเปลี่ยนเส้นทางมาจากเวอร์ชัน HTTP ของหน้าต้นทาง:

  1. ลิงก์ในหน้าต้นทาง HTTPS เชื่อมโยงไปยังหน้าปัจจุบัน แต่เพิ่มพารามิเตอร์การสืบค้นสำหรับหน้าปลายทาง [1] เช่น:https://example1.com/origin.html?goto=http://example2.com/destination.html

  2. เมื่อลิงก์ถูกคลิกเซิร์ฟเวอร์ที่ example1.com ขัดจังหวะคำขอมาตรฐานเมื่อมีพารามิเตอร์การค้นหา 'goto' จากนั้น:

    • เก็บพารามิเตอร์ 'goto' ในคุกกี้ 'goto'
    • ลบพารามิเตอร์และค่า 'goto' ออกจาก URL ของคำขอปัจจุบัน
    • 302 เปลี่ยนเส้นทางไปยัง URL ที่ล้างใหม่นี้ในเวอร์ชัน HTTP ของโดเมนต้นทางเช่น http://example1.com/origin.html
  3. เซิร์ฟเวอร์จะตรวจสอบการร้องขอคุกกี้ 'goto' ทุกครั้งและหากมีอยู่จะล้างคุกกี้และแสดงหน้าการเปลี่ยนเส้นทางที่ง่ายมาก หน้านี้มี [2]:

    • หน้าต่าง Javascript window.location.replace () สคริปต์ที่เปลี่ยนเส้นทางไปยัง URL คุกกี้ goto
    • แท็ก Meta Refresh ที่มีค่าของ URL คุกกี้ goto และการหน่วงเวลาไม่กี่วินาที
    • ลิงก์ไปยัง URL คุกกี้ของ goto

หมายเหตุ

[1] โซลูชันพื้นฐานนี้เป็นตัวเปลี่ยนเส้นทางแบบเปิดและควรพิจารณาบางอย่างเพื่อป้องกันผู้ร้ายโดยใช้พารามิเตอร์การค้นหา goto เพื่อเปลี่ยนเส้นทาง UAs ในการโจมตีแบบฟิชชิง

[2] บางเบราว์เซอร์จะไม่ส่งผู้อ้างอิงเมื่อเปลี่ยนเส้นทางผ่านการเปลี่ยนเส้นทาง JS หรือเมตาแท็กรีเฟรช ในการทดสอบของฉัน IE8 และต่ำกว่าไม่ผ่านผู้อ้างอิง

ฉันไม่แน่ใจว่าเทคนิคนี้จะอนุญาตให้โปรแกรมรวบรวมข้อมูลของเครื่องมือค้นหาติดตามลิงก์หรือไม่ สิ่งนี้ไม่สำคัญสำหรับความต้องการของฉัน

หาก UA ปิดใช้งานคุกกี้นี่จะเปลี่ยนเส้นทางไปยังหน้าต้นทางอีกครั้ง

อนุญาตการเชื่อมต่อ HTTP สำหรับการเปลี่ยนเส้นทาง

บนเซิร์ฟเวอร์ของฉันฉันมีกฎ Apache สำหรับบังคับใช้ HTTPS โดยไม่คำนึงถึงคำขอ:

<VirtualHost *:80>
    ServerName example1.com

    # if not on port 443 then 301 redirect to https while keeping any query string
    RewriteEngine              On
    RewriteCond %{HTTP_HOST}  ^example1\.com$ [NC]
    RewriteCond     %{SERVER_PORT} !443
    RewriteRule     ^(.*)$     https://%{HTTP_HOST}$1 [L,QSA,R=301]

เพื่อให้เทคนิคการเปลี่ยนเส้นทางด้านบนใช้งานได้ฉันต้องการวิธีการอนุญาตการเชื่อมต่อ HTTP แบบมีเงื่อนไข มีหลายวิธีในการทำเช่นนี้ ฉันตัดสินใจว่าคุกกี้จะทำงาน

<VirtualHost *:80>
    ServerName example1.com

    # if not on port 443 then 301 redirect to https while keeping any query string
    RewriteEngine              On
    RewriteCond %{HTTP_HOST}  ^example1\.com$ [NC]
    RewriteCond     %{SERVER_PORT} !443
    RewriteCond %{HTTP_COOKIE}  !disable_ssl [NC]
    RewriteRule     ^(.*)$     https://%{HTTP_HOST}$1 [L,QSA,R=301]

disable_ssl cookie จะถูกตั้งค่าในขั้นตอนที่ 2 จากนั้นลบในขั้นตอนที่ 3


ตกลง .... แต่สิ่งนี้ไม่ผ่าน " ส่วนหัวผู้อ้างอิง" อย่างแน่นอน
Pacerier

2

ตามโปรโตคอล HTTP 1.1 http://www.w3.org/Protocols/rfc2616/rfc2616-sec15.html#sec15.1.3

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


1
ทำไมฉันไม่ควร?
Martijn

0

ดูเหมือนว่าสิ่งที่คุณต้องการเป็นไปไม่ได้ดังนั้นวิธีแก้ปัญหาที่เป็นไปได้ หากเว็บไซต์เป้าหมายใช้ Google Analytics (หรือโปรแกรมที่เข้ากันได้ฉันเชื่อว่า Piwik ใช้ไวยากรณ์ที่คล้ายกันและแพคเกจสถิติอื่น ๆ น่าจะไม่สนใจสิ่งนี้) คุณสามารถส่งพารามิเตอร์ติดตามเช่นในลิงก์ของคุณไปที่ example.com

http://www.example.com/?utm_campaign=spring&utm_medium=referral&utm_source=exampleblog

สิ่งนี้จะปรากฏในรายละเอียด GA ของพวกเขาตรวจสอบให้แน่ใจว่าได้เลือกค่าที่ไม่น่าจะมีใครใช้ดังนั้นคุณจะไม่บังคับให้พวกเขามีข้อขัดแย้ง / หรือซ่อนทราฟฟิกของคุณไว้เบื้องหลังคนอื่น

Google ทำเครื่องมือสร้าง URL ที่มีประโยชน์ที่นี่http://support.google.com/analytics/answer/1033867?hl=th

อัปเดต - มารยาท

ฉันสามารถพูดโดยทั่วไป / เป็นการส่วนตัว ...

จรรยาบรรณมักจะเป็นในสายตาของคนดู หากปราศจากสิ่งนี้ฉันคิดว่าอย่างน้อยใน GA ก็น่าจะปรากฏขึ้นโดยตรงหรืออาจจะ (ไม่มีชุด) ที่จะทำให้ร่างของพวกเขาบิดเบือนเพื่อให้ดูเหมือนว่าตราสินค้าของพวกเขาใหญ่กว่าที่เป็นอยู่ โดยส่วนตัวแล้วฉันต้องการแคมเปญที่ได้รับการคัดเลือกอย่างระมัดระวังเพื่อที่ฉันจะได้ทราบว่าการจราจรนั้นมาจากไหน

คุณสามารถดูได้ว่าถ้าคุณส่งปริมาณการใช้ข้อมูลไปไม่มากพวกเขาอาจไม่สังเกตเห็นถ้าคุณส่งจำนวนมากพวกเขาอาจไม่บ่น! หากพวกเขาทำเช่นนั้นคุณมักจะหาคนอื่นมาให้ฟรี!

และถ้าคุณเจาะจงมาก ๆ มันก็ไม่ควรทำให้เกิดปัญหา แคมเปญเป็นชื่อของเว็บไซต์ของคุณและแหล่งที่มาเป็นส่วนของเว็บไซต์ของคุณอาจ?

http://www.example.com/?utm_campaign=mygreatsite.com&utm_medium=referral&utm_source=specialoffers

ความคิดที่ดี! ฉันคิดเกี่ยวกับวิธีแก้ปัญหานี้ แต่สงสัยว่าเป็น "กฎ" ของพวกเขาเกี่ยวกับการดำเนินการนี้จากจุดสิ้นสุดของฉัน โดยปกติแล้วพารามิเตอร์การสืบค้นเหล่านี้จะถูกเพิ่มเข้าไปในเว็บไซต์ของบุคคลที่สามเพื่อให้พวกเขาสามารถติดตามแคมเปญของพวกเขา ฯลฯ วิธีการนี้จะถูกพิจารณาว่าเป็นการกระทำที่ไม่เหมาะสมหรือไม่?
แคร็กเกอร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.