2017-05-11 38 views
8

Google Analytics pokazuje podejrzaną kwotę (direct)/(none) jako źródło mojej witryny. Wiem, że gdy strona HTTP jest połączona z witryną HTTPs, informacja o stronie odsyłającej jest tracona.Implementowanie protokołu HTTP do przekierowania HTTPs zachowywanie odwołania Google Analytics

w moim przypadku, mam bezpieczną witrynę https://example.com i używam następujące ustawienia Apache do przekazania użytkownikom w przypadku próby uzyskania dostępu do niezabezpieczonego wersję:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 

oczywiście, nie mogę kontrolować, czy zewnętrzna (bezpieczna) strona internetowa łączy mnie przez http lub https.

Teraz moje pytania to:

  • dlaczego wywołującej informacja jest tracona od https do http?
  • jeśli witryna zewnętrzna łączy mnie jako http://example.com, czy będzie to pokazane jako bezpośrednie w analitykach?
  • Czy istnieje sposób przekierowania użytkownika do bezpiecznej witryny, zachowując jednocześnie stronę odsyłającą?

Odpowiedz

4

Wynika to security:

Ponieważ źródłem łącza mogą być informacje prywatne lub może objawić się inaczej prywatną źródło informacji, zaleca się, aby użytkownik mógł wybrać, czy nie zostanie wysłane pole Referer. Na przykład klient przeglądarki może mieć przełącznik do przeglądania otwartego/anonimowo, co odpowiednio włącza/wyłącza wysyłanie informacji o Referer i From.

Klienci NIE POWINIEN uwzględniać pola nagłówka Referer w (niezabezpieczonym) żądaniu HTTP, jeśli strona odsyłająca została przesłana z użyciem bezpiecznego protokołu.

Autorzy serwisów korzystający z protokołu HTTP NIE POWINNI używać formularzy opartych na GET do przesyłania wrażliwych danych, ponieważ spowoduje to zakodowanie tych danych w URI żądania. Wiele istniejących serwerów, serwerów proxy i agentów użytkownika rejestruje identyfikator URI żądania w miejscu, w którym może być widoczny dla stron trzecich. Serwery mogą korzystać przesyłanie formularza POST oparte zamiast

Takie zachowanie jest lepsze explained here:

Udając między HTTP i HTTPS spec HTTP mówi, że nagłówek Referer NIE powinna być wysłana (patrz 15.1.3 w RFC2616). Specyfikacja nie określa jednak, co powinno się stać między stronami HTTPS.


Twoje pytanie zostało rozwiązane na StackOverflow wcześniej. Zobacz this one.

Niektóre poprawki zaproponowane:

1) dla niektórych przeglądarkach, można po prostu dodać nowy metatagu do strony: <meta name="referrer" content="always"> lub <meta name="referrer" content="origin">. Dowiedz się więcej o tym meta. Różnice w obsłudze przeglądarek mogą być następujące: found here.

2) Można użyć strony pośredniczącej, która śledzi odsłonę, gdy jest tam referrer (http: http://page.com/reditect?url=https://page.com/finalpage.htm) gdzie/redirect wywoła połączenie z Analytics, aby śledzić stronę finalpage.htm z poleceniem zawartym przed przekierowaniem tam. Zobacz full explanation.

3) Można dodać parametr do przekierowania 301 i zastąpić informacje o stronie odsyłającej za pomocą ga('set', 'referrer', 'http://example.com');. Zobacz full explanation. Można to połączyć z poprzednim punktem i uniknąć śledzenia na stronie pośredniczącej, ale zebrać dane strony odsyłającej.

+0

Podobnie jak spam, ale te opcje najlepiej rozwiązują ten problem. –

+0

Numer 1) wymaga ustawienia metatagu na stronie początkowej, prawda? Naprawdę nie jest to wykonalna poprawka. – Marco

+0

Następnie spróbuj 2;) Jedyne, co mogę pomyśleć po złej stronie, to to, że jest możliwe, że stopa odbicia spada nieco, ponieważ śledzisz odsłonę w przekierowaniu (do dostać referrer do określonego lądowania), a następnie po przekierowaniu. Sądzę, że w pewnym momencie trzeba dokonać kompromisów. – nitobuendia