• Referer 정의

- 웹 브라우저로 서핑할 때 (하이퍼) 링크를 통해 다른 페이지, 사이트를 방문 시 어떤 경로를 통해 유입되었는지 확인할 때 사용되는 헤더 중에 하나.

- HTTP 리퍼러를 정의한 RFC에서 referrer을 referer로 잘못기입하여 HTTP 리퍼러는 'HTTP referer'라고 호칭함.



  • Meta 태그를 이용

Meta tag를 이용하여 Referer 검증을 bypass 할 수 있다. 단, Header에 referer이 없을 경우에 대한 검증을 서버에서 할때에는 이 방법으로 우회가 불가능하다.



[ 적용 예 ]

- 스펠링 주의 : tag에 삽입할 때는 referrer을 써야한다. 

<html>
<head>
<meta name="referrer" content="no-referrer"/>
</head>
<body>
<script>
function httpGet(theUrl)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
xmlHttp.send( null );
return xmlHttp.responseText;
}
var result = httpGet("http://www.referertest.com")
alert(result);
</script>
</body>
</html>


[ Meta 태그 없을 때 Request ]

GET / HTTP/1.1
Host: www.referertest.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: */*
Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: https://www.referertest.com
Cookie: (생략)
Connection: close



[ Meta 태그 있을 때 Request ]


GET / HTTP/1.1
Host: www.referertest.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: */*
Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: (생략)
Connection: close




참조 URL : 

- https://ko.wikipedia.org/wiki/%EB%A6%AC%ED%8D%BC%EB%9F%AC

- https://www.sjoerdlangkemper.nl/2017/06/21/bypass-csrf-check-using-referrer-policy/


+ Recent posts