어떤 경우에 HTTP_REFERER가 비어 있습니까?


163

빈 HTTP_REFERER를 얻는 것이 가능하다는 것을 알고 있습니다. 어떤 상황에서 이런 일이 발생합니까? 빈 것이 있으면 항상 사용자가 변경했음을 의미합니까? 비어있는 것이 null을 얻는 것과 같은가요? 그리고 어떤 상황에서 나도 그것을 얻습니까?


8
클라이언트가 보내지 않을 때.
이그나시오 바스케스-아 브람스

답변:


277

최종 사용자 일 때 비어 있거나 비어있을 수 있습니다.

  • 브라우저 주소 표시 줄 자체에 사이트 URL을 입력했습니다.
  • 브라우저에서 유지 관리하는 북마크로 사이트를 방문했습니다.
  • 창 / 탭에서 첫 페이지로 사이트를 방문했습니다.
  • 외부 애플리케이션에서 링크를 클릭했습니다.
  • https URL에서 http URL로 전환했습니다.
  • https URL에서 다른 https URL로 전환했습니다.
  • 모든 요청에서 리퍼러를 제거하는 보안 소프트웨어 (바이러스 백신 / 방화벽 / 등)가 설치되어 있습니다.
  • 는 모든 요청에서 리퍼러를 제거하는 프록시 뒤에 있습니다.
  • 리퍼러 헤더 (searchbots!)를 설정하지 않고 프로그래밍 방식으로 사이트를 방문했습니다 (예 : curl ).

32
"사용자가 보안 (HTTPS) 페이지에서 안전하지 않은 페이지로 전환 할 때"를 추가 할 수 있습니다.
존 픽

4
"창 / 탭에서 사이트를 첫 페이지로 방문했습니다." 온 링크를 클릭하여 새 창 / 탭에서 열었더라도 ?? 확실합니까? 이것은 브라우저의 잘못된 행동 일 것입니다
matteo

또한 여기에서 볼 stackoverflow.com/questions/21922143/... 이에 대한 예외 사항에 대한
GetFree

4
"https URL에서 다른 https URL로 전환했습니다". 이거 확실하니? : \
Oscar Mederos 2016 년

5
기본적으로 HTTPS URL에서 다른 HTTPS URL로 전환하면 전체 참조자가 설정됩니다. 그러나이 기본 정책을 무시할 수 있습니다. w3.org/TR/ 리퍼러 정책
카필

34

HTTP_REFERER-브라우저가 마지막으로 본 페이지를 알리는 브라우저가 전송합니다!

중요한 이유로 [HTTP_REFERER]를 신뢰하는 경우 쉽게 위조 될 수 있으므로 다음과 같이하지 않아야합니다.

  1. 일부 브라우저는 HTTP_REFERER가 전달되지 않도록 액세스를 제한합니다.
  2. 주소 표시 줄에 주소를 입력하면 HTTP_REFERER를 통과하지 못합니다
  3. HTTP_REFERER = NULL이므로 새 브라우저 창을 열면 HTTP_REFERER가 전달되지 않습니다.
  4. 개인 정보 보호를 위해 일부 브라우저 애드온을 차단합니다. 일부 방화벽과 AV는 그렇게합니다.

이 파이어 폭스 확장 프로그램을 사용하면 원하는 헤더를 설정할 수 있습니다.

축하의 @ 마스터 :

Firefox :

확장 : refspoof , refontrol , 헤더 수정 , 참조하지 않음

완전히 비활성화 : 이 옵션은 "network.http.sendRefererHeader"아래 about : config에서 사용할 수 있으며 참조 전달을 비활성화하려면이 값을 0으로 설정하려고합니다.

구글 크롬 / 크롬 :

확장 : noref , spoofy , 외부 noreferrer

Chnage ~ / .config / google-chrome / Default / Preferences 또는 ~ / .config / chromium / Default / Preferences를 완전히 비활성화 하고 다음을 설정하십시오.

{
   ...
   "enable_referrers": false,
   ...
}

또는 바로 가기 또는 cli에 --no-referrers를 추가하십시오.

google-chrome --no-referrers

오페라:

설정> 환경 설정> 고급> 네트워크를 완전히 비활성화 하고 "레퍼러 정보 보내기"를 선택 해제하십시오.

스푸핑 웹 서비스 :

http://referer.us/

독립형 필터링 프록시 (임의의 헤더) :

Privoxy

wget 사용시 http_referer 스푸핑

'--referer = url'

curl 사용시 http_referer 스푸핑

-e,-참조 자

스푸핑 http_referer wth telnet

telnet www.yoursite.com 80 (press return)
GET /index.html HTTP/1.0 (press return)
Referer: http://www.hah-hah.com (press return)
(press return again)

Tamper Data 는 리퍼러 값을 변경하여 플레이하려는 경우 살펴볼 가치가있는 또 다른 Firefox 확장입니다.
크리스 Hepner

나는 그 이름을 기억하기 위해 열심히 노력하고있었습니다. 그러나 나의 기억은 나를 배신했다. 감사합니다 :)
ThatGuy

@nix Some browsers limit access to not allow HTTP_REFERER to be passed그러한 브라우저 및 / 또는 확장의 예를 들어 주시겠습니까?
축하의 주인

@MasterofCelebration은 http_referer를 내 대답에 속이는 방법을 추가했습니다.
ThatGuy

referer.us를 사용하여 리퍼러를 스푸핑하거나 숨기지 마십시오! 그것은 작동하지 않습니다 와 정보를 누출. 현재 유일하게 작동하는 서비스는이 무료 숨기기 리퍼러 서비스입니다.
Brian Smith

9

BalusC의 목록은 확실합니다. 이 필드가 빈 상태로 나타나는 추가 방법 중 하나는 사용자가 프록시 서버 뒤에있는 경우입니다. 이것은 방화벽 뒤에있는 것과 비슷하지만 약간 다르므로 완전성을 위해 언급하고 싶었습니다.


8

새로운 Referrer Policy 표준 초안 을 사용하여 Referer 헤더가 요청 오리진으로 전송되지 않도록하는 경우에도 비어 있습니다 . 예:

<meta name="referrer" content="none">

크롬과 파이어 폭스는 이미 레퍼러 정책의 초안 버전을 구현했지만, 크롬 no-referrer대신에 none(그리고 never어딘가에 보았을 때 ) 크롬과 같이 조심해야한다 .


브라우저 호환성 테이블 : developer.mozilla.org/en-US/docs/Web/HTTP/Headers/...
djvg

0

브라우저 참조 구현이 실제로 일치하지 않는 것으로 나타났습니다.

예를 들어, "download"속성을 가진 앵커 요소는 Safari에서 예상대로 작동하고 참조를 전송하지만 Chrome에서는 웹 서버 로그에서 참조가 비어 있거나 "-"입니다.

<a href="http://foo.com/foo" download="bar">click to download</a>

Chrome에서 오류가 발생했습니다. 추천자가 전송되지 않았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.