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

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



답변

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

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

답변

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)


답변

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


답변

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

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

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


답변

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

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

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

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


답변