2009-09-07 15 views
5

Wyobraź sobie dwie strony internetowe, obie wyświetlane przy użyciu https. Mieszkają w różnych domenach.Przedzięcie http_referer zostało utracone przy użyciu https

Jak mogę (rozsądnie) upewnić się, że ktoś przychodzący na moją stronę przyszedł przez hiperłącze znajdujące się w innej (specyficznej) domenie? Chcę zezwolić na ruch z tej domeny. Wszelkie pomysły na najlepszy sposób osiągnięcia tego będą mile widziane.

Próbowałem spojrzeć na HTTP_REFERER, ale najwyraźniej nie jest on wysyłany w tym przypadku. Wiem, że specyfikacja HTTP RFC nie wysyła informacji o stronie odsyłającej z https -> http, ale czy dotyczy to również https -> https między domenami lub certyfikatami ssl?

Moja domena działa na ASP.NET, jeśli to ma znaczenie. Nie mam kontroli nad domeną źródłową.

Dziękuję.

+4

Referer jest łatwo podrobiony, nie polecam go –

+3

Wiem, że strona odsyłająca może zostać sfałszowana. Rozumiem, że nie mogę powstrzymać wszystkich. Potrzebuję rozwiązania, które będzie działało na tyle dobrze, aby trzymać się z daleka ciekawością i powstrzymywać ludzi od zakładania strony docelowej, zmuszając ich do dotarcia za pośrednictwem strony, nad którą nie mam kontroli. – BlueRonin

Odpowiedz

5

czy też nie RFC pozwalają wysyłania HTTP_REFERER lub nie, znajdziesz, że wielu klientów internetowych i/lub pełnomocnictwa lub inne bramy związane z prywatnością między nim a serwerem usunie lub sfałszować HTTP_REFERER w nagłówek, w którym większość schematów uwierzytelniania opartych na http_referer jest częściowo funkcjonalna.

Jeśli masz jakąś współpracę z opiekunem pierwszego serwera https, możesz zgodzić się na przesłanie kodu sortowania czasu i coś takiego w żądaniach do serwera. Po sprawdzeniu hashcode na końcu dowiesz się, że Twój gość https przyszedł z innego serwera [bardzo niedawno].

6

Opracowanie odpowiedzi mjv: powinieneś umieścić HMAC (RFC 2104) w adresie URL. Mieć wspólny sekret między dwoma serwerami i mieć serwer źródłowy generujący łącza formularza/timestamp/hmac/path. Hmac powinien zostać zweryfikowany z hmac (key, timestamp + path), aby różne obrazy generowały różne hmacs. Serwer docelowy może następnie zdecydować, czy znacznik czasu jest wystarczająco młody, aby pochodzić z przekierowania.

Można to ograniczyć, umieszczając adres IP klienta w hmac, upewniając się, że ten sam klient, który otrzymał adres URL, również go rozwiązuje. Może to być jednak podatne na błędy w obecności serwerów proxy HTTP, które przetwarzają tylko http, a nie https lub odwrotnie.

0

Jeśli nie masz kontroli nad stroną odsyłającą, masz pecha.

Snajpera polecającego, jeśli możesz, a jeśli go nie ma, wyrzuć stronę docelową z napisem "kliknij tutaj, przejdź do strony A, aby móc tu wrócić".

Dodatkowo spędź trochę czasu pracując nad bardziej niezawodną metodą uzyskiwania dostępu do "bezpiecznej" witryny.

+0

To jest mój problem, fakt, że strona odsyłająca nie jest obecna, gdy ktoś przychodzi z witryny A. Potrzebuję błędu "przejdź do witryny A", aby pokazać się wszystkim innym. Jeśli chodzi o dostęp do strony, strona A kieruje ludzi do mojej strony logowania. Nie mogą wiele zrobić bez logowania, poza podziwem dla pracy moich grafików. – BlueRonin

Powiązane problemy