2012-03-27 11 views
1

Java 서블릿에 요청하는 특정 장치 (범주 아님)를 고유하게 식별하기 위해 하드웨어 정보를 수집하는 방법입니까? 나는 이것을 찾았지만 메서드가 있다고 생각하지 않는다. (일부 정보에는 "사용자 에이전트"헤더를 사용할 수 있지만 이는 특정 장치 집합을 식별하는 것으로 충분하지는 않다.)Java 서블릿과 상호 작용하는 장치에서 하드웨어 정보를 가져올 수 있습니까?

+1

찾고있는 정보 유형을 설명 할 수 있습니까? 정말 당신이 사용하는 사용자 에이전트에 의해 제한됩니다. 순전히 보안상의 이유로 만 제공하는 것보다 더 많은 것을 결정할 수있을 것이라고 생각하지 않습니다. –

+0

서블릿에 요청하는 장치를 고유하게 식별하는 방법이 필요합니다. 예를 들어, 그 맥 주소를 알고 싶어요. Java 애플릿을 사용하더라도 (필요한 권한 때문에) 해당 정보를 찾을 수 있는지 여부는 알 수 없습니다. –

답변

3

이 정보는 HTTP 요청에서 사용할 수 없습니다. 원격 주소 (클라이언트 IP)와 사용자 에이전트 (브라우저가 가장하는 문자열)는 HTTP 요청을 기반으로 추출 할 수있는 가장 가까운 고유 식별자입니다. 그렇더라도이 정보는 신뢰할 수 없습니다. 클라이언트는 예를 들어 익명 프록시를 사용할 수 있습니다. 클라이언트는 예를 들어 브라우저의 사용자 에이전트 문자열을 변경할 수 있습니다.

기본적으로 클라이언트 측에서이 정보를 수집 한 다음 요청 매개 변수로 서버 측에 보내야합니다. 하지만이 정보를 수집 할 수있는 방법은 제한되어 있습니다. 예를 들어 JavaScript는 보안상의 이유로 허용하지 않습니다. 가장 가까운 내기는 Java Applet 또는 Web Start 응용 프로그램에 서명 한 것입니다. 이를 통해 클라이언트가 일부 Java 코드를 다운로드하여 로컬로 실행할 수 있습니다. 그러나 이것은 또한 항상 신뢰할만한 것이 아닙니다. 클라이언트는 예를 들어 애플릿/webstart 코드를 해킹하거나 애플릿과 서버 사이의 HTTP 트래픽을 변조 할 수 있습니다.

또 다른 방법은 클라이언트가 유효한 로그인으로 고유 한 식별자 자체를 제공해야하는 등록/권한 부여/인증 시스템을 소개하는 것입니다. 이것은 단순 할뿐만 아니라 더 강력합니다.