2009-08-31 10 views
5

Ok, używam pióra do równoważenia obciążenia. Moje serwery apache widzą zdalny adres IP jako adres IP modułu równoważenia obciążenia. Potrzebuję serwera apache, aby móc zobaczyć adres IP klienta z różnych powodów. Mogę użyć X-Forwarded-For, aby wydobyć to z niezaszyfrowanej strony, ale nie jest częścią strony SSL ...ajax/ssl/X-Forwarded-For

A więc, nie wiedząc o Ajaksie, zastanawiam się. Czy mogę użyć ajaxa, aby wyciągnąć X-Forwarded-For z niezaszyfrowanej strony i ustawić ją jako zmienną po stronie klienta? Wiem, że to możliwe, po prostu zastanawiam się, czy ktoś to zrobił, a to powoduje błąd bezpieczeństwa w przeglądarce.

Pomyślałem, że mogę przekierować je na stronę inną niż ssl, a następnie umieścić adres IP w pliku cookie, a następnie z powrotem na stronie SSL, ale myślę, że to też hokey.

W każdym razie inny sposób na pobranie adresu IP do skryptu również zadziała. Próbowałem http://stderr.net/apache/rpaf/, ale nie wiem też o IP.

Odpowiedz

0

AJAX jest ograniczony przez zasady tego samego pochodzenia, a różne protokoły są uważane za różne pochodzenie, więc nie można uzyskać żądania HTTP AJAX ze strony HTTPS.

Próba zrobienia tego za pomocą innych środków może spowodować, że przeglądarki ostrzegą przed mieszaną, bezpieczną i niezabezpieczoną zawartością.

Umieszczenie adresu IP w pliku cookie na stronie HTTP (najlepiej podpisane lub zapisane w sesji po stronie serwera, do której odwołuje się plik cookie) działałoby, ale nie będzie tak bezpieczne, jak czytanie rzeczywistego adresu IP sesji SSL (ponieważ osoba atakująca może manipulować HTTP ciasteczka i nie można ustawić pliku cookie zawierającego tylko HTTPS).

Innym rozwiązaniem jest zakończenie protokołu SSL w module równoważenia obciążenia i przesłanie go jako ruch HTTP do Apache.

Jeszcze innym podejściem byłoby zastosowanie równoważenia obciążenia niższego poziomu - NAT - które zachowuje adres źródłowy.