[Web] HTTP referer (리퍼러) , X-Requested-With

해니·2023년 9월 11일
0

CS

목록 보기
7/15
post-thumbnail



🚨 URL 직접 접근 제한

GS인증 보안성 결함 중 , jsp 파일에서 <script> 태그를 통해 라이브러리를 불러오는데
해당 경로에 대한 직접 접근을 막으라는 지적을 받았다.
처음에는 스프링 시큐리티를 이용해서 접근을 막으려고 했는데, jsp 파일에서 라이브러리 파일 접근을 못 해서 화면이 보이질 않았다...
<script> 태그를 통한 접근이나 Ajax 요청은 허용하고, 사용자가 직접 URL로 접근하는 방법은 막아야 하는데.. 🙄
결과적으로 Filter와 HTTP 헤더값을 이용하여 문제를 해결했다.


회사에 연차 높은 웹 개발자가 없어서 이 방법이 맞는지 확실하지 않지만... 더 확실한 방법이 있는지 연구를 해봐야겠다..



HTTP referer

  • http 헤더중 하나
  • 웹 브라우저나 웹 클라이언트가 요청을 보낼 때, 그 요청이 발생한 웹 페이지의 주소를 포함하여 보내는 헤더
    • 브라우저가 서버로 referer 헤더값을 설정해서 보낸다
    • 서버는 referer를 참조함으로써 현재 표시 하는 웹페이지가 어떤 웹페이지에서 요청되었는지 알 수 있다
    • A태그, img 태그의 이미지 호출시나 script 태그, style 태그의 요청 등에 대해서도 referer가 남는다



서버에서 referer 데이터 얻기

HttpServletRequest httpRequest = (HttpServletRequest) req;
String refererHeader = httpRequest.getHeader("Referer");

💡 URL을 직접 주소창에 입력하여 접근하는 경우에는 이전에 방문한 웹 페이지가 없기 때문에 Referer 헤더 값이 없거나 null이다



X-Requested-With 헤더

  • 표준 헤더는 아닌 커스텀 헤더
    • 접두사 X는 표준이 아님을 의미 (non-standard)
  • 해당 요청이 Ajax라는 걸 의미
    • jQuery와 같은 대부분의 자바스크립트 라이브러리에서 Ajax 요청을 보낼 때에 이 헤더를 설정한다

서버에서 X-Requested-With 헤더값 확인

String requestedWithHeader = httpRequest.getHeader("X-Requested-With");	
boolean isAjaxRequest = "XMLHttpRequest".equals(requestedWithHeader);





출처

웹프로그래밍 리퍼러(referer)|작성자 헬리코
HTTP referer 란?
[Web] HTTP Referer 헤더 정보 사용 방법( 사이트 유입 분석 )

profile
💻 ⚾️ 🐻

0개의 댓글