programing

Http Servlet Request - 참조 URL을 얻는 방법

prostudy 2022. 7. 4. 21:49
반응형

Http Servlet Request - 참조 URL을 얻는 방법

내 사이트에 링크되어 있는 URL을 Java Servlet에 기록해야 합니다.

HTTP 헤더에서 사용할 수 있습니다.다음과 같이 서블릿으로 가져올 수 있습니다.

String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling.

단, 이 값은 클라이언트가 제어하는 값이기 때문에 완전히 다른 값으로 스푸핑되거나 삭제될 수 있습니다.따라서 반환되는 값이 무엇이든 백엔드의 중요한 비즈니스 프로세스에는 사용하지 않고 프레젠테이션 제어(예: 특정 레이아웃 부품의 숨기기/표시/변경) 및/또는 통계에만 사용해야 합니다.

관심 있는 사람들을 위해, 철자 오류에 대한 배경은 위키피디아에서 찾을 수 있습니다.

사실 다음과 같습니다.request.getHeader("Referer")또는 더 나은, 그리고 100% 확신하건데,request.getHeader(HttpHeaders.REFERER)여기서 HttpHeaders는com.google.common.net.HttpHeaders

다음 URL이 요청으로 전달됩니다.request.getRequestURL().

당신과 링크하고 있는 다른 사이트를 말하는 건가요?HTTP Referrer를 캡처하려면 다음 명령을 호출합니다.

request.getHeader("referer");

모두 말했듯이

request.getHeader("referer");

접수된 답변과 대조적으로 레퍼러 헤더의 보안 측면에 대한 자세한 내용을 추가하고 싶습니다.Open Web Application Security Project(OWASP) 치트 시트의 CSRF(Cross-Site Request Formature) 방지 치트 시트에서 참조자 헤더의 중요성에 대해 설명합니다.

이 권장되는 동일한 오리진 검사에서 더 중요한 것은 다수의 HTTP 요청 헤더가 '금지' 헤더 목록에 있으므로 JavaScript에서 설정할 수 없다는 것입니다.브라우저 자체만이 이러한 헤더의 값을 설정할 수 있습니다.이러한 헤더의 변경에는 XSS 취약성조차 사용할 수 없기 때문에 헤더의 신뢰성이 높아집니다.

여기서 권장되는 소스 오리진체크는 보호되는 헤더(오리진, 레퍼러, 호스트)의 3개에 의존하기 때문에 자체적으로는 상당히 강력한 CSRF 방어가 됩니다.

여기에서 금지 헤더 목록을 참조할 수 있습니다.사용자 에이전트(즉, 브라우저)는 사용자가 아닌 이러한 헤더를 완전히 제어할 수 있습니다.

언급URL : https://stackoverflow.com/questions/2648984/httpservletrequest-how-to-obtain-the-referring-url

반응형