인프런 커뮤니티 질문&답변
접근 제어시, HTTP Referrer 를 사용해도 될까요?
해결된 질문
작성
·
4.1K
0
안녕하세요.
좋은 강의내용을 잘 듣고 있습니다. 감사합니다.
한가지 문의를 드리고 싶은데요.
보안적인 측면에서, Referrer 에 있는 정보가 유효한 경우만, 인증 성공을 하고 싶은데요.
HTTP Referrer 가 L4 또는 Proxy Server 등을 거치는 경우, 이전 요청정보가
L4 나 Proxy Server 정보로 변경되지는 않나요..
물론, Referrer 정보 생성을 위해서, 브라우져 form 방식의 Post 로 요청을 할 경우입니다.
실제적으로 이런 방법이 보안적인 측면에서 사용되는 지요?
답변 1
0
정수원
지식공유자
L4 혹은 Proxy Server 는 Web 이나 Was 로 분기처리해주는 역할을 하게 되는데 HTTP Referrer 는 하이퍼링크를 클릭했을 경우 IP 가 아닌 도메인 주소 기준으로 이전요청 정보를 참조하기 때문에 특별한 문제가 될 것 같지는 않습니다.
IP 같은 경우는 Proxy Server 와 실제 Was 가 별도로 구분되기 때문에 헤더 값을 다르게 설정해야 합니다.
그리고 실제로 스프링 시큐리티에서도 로그인 성공시 이동할 TargetUrl 을 구할 때 HTTP Referrer 를 사용해서 구하고 있습니다.
AbstractAuthenticationTargetUrlRequestHandler.java
protected String determineTargetUrl(HttpServletRequest request,
--중략
String targetUrl = null;
if (targetUrlParameter != null) {
targetUrl = request.getParameter(targetUrlParameter);
if (StringUtils.hasText(targetUrl)) {
logger.debug("Found targetUrlParameter in request: " + targetUrl);
return targetUrl;
}
}
// HTTP Referrer 사용
if (useReferer && !StringUtils.hasLength(targetUrl)) {
targetUrl = request.getHeader("Referer");
logger.debug("Using Referer header: " + targetUrl);
}
if (!StringUtils.hasText(targetUrl)) {
targetUrl = defaultTargetUrl;
logger.debug("Using default Url: " + targetUrl);
}
return targetUrl;
}
그런데 위키백과에서는 HTTP Referrer 는 조작또한 가능하기 때문에 리퍼러 정보를 사용할 때에는 보안에 항상 주의해야 한다고 되어 있습니다.




