2013-02-20 2 views
1

단일 진입 점 URL이있는 Java 웹 응용 프로그램이 있고 외부 웹 응용 프로그램이 해당 URL로 리디렉션됩니다. 서버 측에서 쿠키를 사용하여 특정 도메인의 요청이 왔는지 확인할 수 있습니까?HTTP 요청의 도메인 이름을 확인할 수 있습니까?

편집 : 은 내가 당신이 HTTP 리퍼러를 알고 싶은 생각

+0

가 변경할 수있는 외부 서버가 Java 웹 앱으로 리디렉션되는 방식은 무엇입니까? – PbxMan

답변

4

외부 응용 프로그램 코드를 변경할 수 없습니다 ("이라는"그 URL을 페이지) :

String referrer = request.getHeader("referer"); 

편집

내가 말한 바에 따르면 gustafc은 HTTP 리퍼러가 클라이언트가 제어하는 ​​값이며 완전히 다른 또는 심지어 클라이언트에 의해 삭제 된 것으로 스푸핑 될 수 있으므로 HTTP 리퍼러가 가짜 값이 아닌지 확인할 수 없습니다.

2

예. 요청 개체의 getRemoteHost() 또는 getRemoteAddr() 메서드에서 요청의 원본을 가져올 수 있습니다.

http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html#getRemoteHost()

+0

getRemoteHost()가 리디렉션 발신자가 아닌 마지막 프록시를 반환하기 때문에 적절한 솔루션이 아닙니다 –

+0

일부 프록시는 원래 클라이언트 IP를 전달합니다 예를 들어 아파치 mod_proxy는'X-Forwarded-For'를 사용합니다 .. – johnstok

3

당신은 HTTP referer를 확인할 수 있지만, 신뢰할 수 없습니다 : 그것은 가짜 쉽게, 그리고 일부는 개인 정보 보호를 위해 리퍼러를 사용하지 않도록 선택할 수 있습니다. 따라서 대부분의 경우 작동하지만 보안이나 기타 필수적인 문제에 의존하지 마십시오.

이유는 무엇입니까? 당신은 단지 요청이 특정 IP에서인지 확인해야하는 경우

+0

주된 이유는 보안입니다. 사실, 요청에 암호화 된 키가 있습니다. 도메인 이름 –

+0

dns 요청을 시도하여 결과가 HTTP referer와 일치하면이를 볼 수 있습니다. – Dimitri

+0

@DmitryTikhonov 사용자가 다른 웹 사이트에서 길을 클릭하여 귀하의 웹 사이트를 방문했는지 또는 사용자의 요청이 특정 도메인에서 발생했는지 (즉, 기본적으로 사용자의 IP를 확인하는지) 확인하려는 중입니까? 나는 일종의 전제를 사용했다. 불가능한 일이다. 후자는 여기에있는 다른 포스터에서 설명한대로 꽤 가능합니다. – gustafc

0

(또는 IP 범위)이이 (프록시를 가정하면 방화벽 내에 지원하도록 방화벽에서 규칙을 구성 할 수 있습니다.

관련 문제