2012-09-19 21 views
5

Tomcat içinde çalışan bir Java servlet uygulamasına sahibim, yalnızca çalıştırmak istediğim bir yönetici komutu var Güvenlik nedeniyle makinenin kendisi (veya muhtemelen kendi bilgisayarım). Bu yüzden HttpServletRequest ben almalarını ancak uzaktan adresini kontrol Bunu zorlamak her zaman isteğiNeden uzak bir makineden erişilirse request.getRemoteAddr(). Equals ("127.0.0.1")

Neden bu, tamir veya orada olabilir yerel ana bilgisayardan gelen olmasa bile 127.0.0.1 döndürür admin komutumu yalnızca sunucudan çalıştırmanın alternatif bir yolu.

+0

Lütfen kodunuzun bir kısmını yapıştırabilir ve bu kontrolü nerede yapmaya çalıştığınızı açıklayabilir misiniz? – Scis

+2

, üzerinde çalıştığı makinede tomcatın önünde bir şey var mı (örneğin, nginx) isteği yönlendiriyor? 'X-Forwarded-For' başlığına bir göz atmayı deneyin. –

+0

@Jonas Adler, homebox'ımın tersi olarak sunucudan çalıştırdığımda x-forwarded değeri evet (ev bilgisayarımın çalıştığı değer evimdeki ipaddress ile eşleşmese de) farklı olmalıyım. bunun yerine x-forwarded değerini kontrol edin ve sunucu makineme erişimi kısıtlayın. –

cevap

3

İlk önce isteğin 'X-Forwarded For' başlığına sahip olup olmadığını kontrol edin. Başlık ayarlanmışsa, içindeki ilk IP sizin aradığınız kişi olmalıdır. Başlık boşsa request.getRemoteAddr() doğru IP'yi döndürmelidir. 'X-Forwarded-For' için

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

Not Eğer örneklerini yönlendirme beri böyle doğru IP almak% 100 emin olamaz 'X-Forwarded-için belirlenen zorunda değildir 'başlık.

İlgili konular