2012-09-19 9 views
5

Mam aplikacja serwlet Java działa w Tomcat, istnieje jedno polecenie administratora, który chcę tylko móc uruchomić z sama maszyna (lub ewentualnie mój własny komputer) ze względów bezpieczeństwa. Tak aby wymusić to sprawdzić zdalny adres HttpServletRequest że otrzymam ale zawsze zwraca 127.0.0.1 mimo że wniosek nie jest pochodzących z lokalnego hostaDlaczego request.getRemoteAddr() .jest równy ("127.0.0.1") podczas uzyskiwania dostępu ze zdalnego komputera

Dlaczego jest to, mogę to naprawić, czy też istnieje alternatywny sposób uruchamiania polecenia administratora tylko z serwera.

+0

Czy możesz wkleić część kodu i wyjaśnić, gdzie próbujesz wykonać tę kontrolę? – Scis

+2

Czy jest coś przed komendą tomcat na komputerze, na którym działa (np. Nginx), która przekazuje żądanie? Spróbuj rzucić okiem na nagłówek "X-Forwarded-For". –

+0

@ Jonas Adler, dziękuję tak wartość X-forwarded-for, gdy uruchamiam się z serwera, w przeciwieństwie do mojego homepc jest inny (chociaż wartość, gdy uruchamiam z mojego komputera domowego nie pasuje do mojego domu pcs ipaddress), więc myślę, że powinienem sprawdź zamiast tego wartość x-forwarded-for i ogranicz dostęp do mojego serwera. –

Odpowiedz

3

Najpierw sprawdź, czy żądanie ma nagłówek "X-Forwarded-For". Jeśli nagłówek jest ustawiony, pierwszy adres IP powinien być tym, którego szukasz. Jeśli nagłówek jest pusty, request.getRemoteAddr() powinien zwrócić prawidłowy adres IP.

Wiki dla 'X-Przekazano-For': http://en.wikipedia.org/wiki/X-Forwarded-For

pamiętać, że nie może być w 100% pewien, że masz poprawny adres IP tak, ponieważ przekazywanie instancji nie są zmuszeni do ustawienia „X-Forwarded-For ' nagłówek.

Powiązane problemy