- 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 requestxmlHttp.send( null );return xmlHttp.responseText;}var result = httpGet("http://www.referertest.com")alert(result);</script></body></html>
[ Meta 태그 없을 때 Request ]
GET / HTTP/1.1Host: www.referertest.comUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0Accept: */*Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateReferer: https://www.referertest.comCookie: (생략)Connection: close
[ Meta 태그 있을 때 Request ]
GET / HTTP/1.1Host: www.referertest.comUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0Accept: */*Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateCookie: (생략)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/