301 404 페이지로 리디렉션하거나 상태 코드를 404로 설정하고 페이지에 머물러 있습니까?


9

내 웹 사이트에는 관리자 가이 페이지에 액세스하고 액세스 할 수있는 여러 페이지가 있으며 쿼리 문자열 값을 찾아 올바르게 설정하면 제공됩니다. 예를 들면 다음과 같습니다.

http://www.mydomain.com/show-daily-statistics?key=abc


위의 링크에는 페이지의 내용이 표시되지만 아래와 같은 내용은 표시되지 않습니다.

http://www.mydomain.com/show-daily-statistics


이제 검색 엔진 및 / 또는 관리자가 아닌 사용자가 어떻게 든 숨겨진 페이지에 도달하면 어떻게해야할지 생각했습니다.

물론 페이지의 상태 코드를 404로 변경하거나 301을 다음으로 리디렉션 할 수 있습니다.

http://www.mydomain.com/404-error


Google 및 SEO와 관련하여 가장 좋은 솔루션은 무엇입니까?


6
숨기려는 정보가 전혀 중요하지 않은 경우 실제 인증을 대신 구현하는 것이 좋습니다. 그 외에도 301 리디렉션은 의미 적으로 콘텐츠가 이동했음을 나타내며 여기에는 해당되지 않으므로 부적절한 응답입니다.
당신은

답변:


11

올바른 코드는 401 Not Authorized입니다.

HTTP 사양에 따라

10.4.2 401 무단

요청에는 사용자 인증이 필요합니다. 응답에는 요청 된 자원에 해당하는 챌린지를 포함하는 WWW-Authenticate 헤더 필드 (섹션 14.47)가 포함되어야합니다. 클라이언트는 적절한 Authorization 헤더 필드 (14.8 절)로 요청을 반복 할 수있다. 요청에 이미 인증 자격 증명이 포함 된 경우 401 응답은 해당 자격 증명에 대한 인증이 거부되었음을 나타냅니다. 401 응답에 이전 응답과 동일한 시도가 포함되어 있고 사용자 에이전트가 이미 한 번 이상 인증을 시도한 경우 응답에 제공된 엔티티가 사용자에게 표시되어야합니다. 해당 엔티티는 관련 진단 정보를 포함 할 수 있기 때문입니다. HTTP 액세스 인증은 "HTTP 인증 : 기본 및 다이제스트 액세스 인증"[43]에 설명되어 있습니다.

또는 대안 적으로

10.4.4 403 금지

서버가 요청을 이해했지만 요청 이행을 거부하고 있습니다. 승인은 도움이되지 않으며 요청을 반복해서는 안됩니다. 요청 방법이 HEAD가 아니고 서버가 요청이 이행되지 않은 이유를 공개하기를 원한다면, 엔티티에서 거부 이유를 설명해야한다. 서버가이 정보를 클라이언트가 사용할 수 없게하려면 상태 코드 404 (찾을 수 없음)를 대신 사용할 수 있습니다.

둘 다 의미 상보다 정확합니다 404. 리소스가 존재하므로 404정확하지 않습니다. 401정확해야하지만 인증이 필요하지 않습니다. 모호한 보안은 보안이 아닙니다. 403또한 요청이 이해되면 정확합니다. 리소스가 있으면 요청을 처리하기를 거부합니다. 404403일어나고 있는지 밝히고 싶지 않은 경우에 적합합니다 .

어떤 경우에 301리디렉션이 없는 적절한 자원이 이동하지 않았다.


2
Google은 401/403 상태 메시지를 반환하는 페이지를 색인화하지 않고 제거합니다. 비슷한 질문이 반복되어 robots.txt를 사용하여 간단한 noindex블록을
Simon Hayter

1
@ WPRookie82 페이지를 비밀로 유지하여 페이지를 보호하는 방법-잘못하고 있습니다.
Cthulhu

4
모호한 보안은 전혀 보안이 아닙니다.

1
HTTP Basic 또는 Digest 인증 이외의 인증 방법 (또는 다른 RFC2617 호환 인증 체계)에 401을 사용하는 방법 은 이전에 논의되었습니다 . 당시 여전히 내 의견은 실제로 작동 할 있지만 HTTP 사양에 따라 실제로 유효하지 않으며 어떤 경우에도 403 또는 404가 바람직하다는 의견입니다.
Ilmari Karonen

1
HTTP 사양에 따라 401 Unauthorized가 부적절하다는 의견에 동의합니다.
Stephen Ostermiller

1

이 페이지는 "key"매개 변수가 있거나없는 관리자를위한 페이지이므로 페이지를 색인화 할 수 없으며 색인화해서는 안됩니다. 따라서 관리자가 아닌 사용자를위한 웹 페이지는 404 상태 코드를 보낼 수 있으며 동일한 URL을 그대로 둘 수 있습니다. Google에 페이지가 이동했다고 알리고 존재하지 않는 페이지로 리디렉션하므로 리디렉션하지 마십시오.

이것이 구글도 마찬가지입니다. 더미 페이지로 이동하면 어떻게되는지 확인하십시오 : http://www.google.com/analytics/asdsas


위의 게시물에 대한 작은 수정 사항 http://www.example.com/404-error이 있습니다. 전체 웹 사이트의 일종의 전역 404 페이지이므로 종료되지 않은 페이지로 리디렉션되지 않습니다.
WPRookie82

@ WPRookie82 : 귀하와 귀하의 웹 서버를 제외한 다른 사람 에 관한 한, 존재하지 않는 페이지와 404 응답을 반환하는 기존 페이지 사이에는 차이가 없습니다.
Ilmari Karonen

1

이 상황에 대한 의미 적으로 올바른 HTTP 응답 코드는 403 Forbidden입니다 .

서버가 요청을 이해했지만 요청 이행을 거부하고 있습니다. 승인은 도움이되지 않으며 요청을 반복해서는 안됩니다. 요청 방법이 HEAD가 아니고 서버가 요청이 이행되지 않은 이유를 공개하기를 원한다면, 엔티티에서 거절 이유를 설명해야한다. 서버가이 정보를 클라이언트가 사용할 수 없게하려면 상태 코드 404 (찾을 수 없음)를 대신 사용할 수 있습니다.

(403 응답의 정의는 "인증이되지 도움이 될 것"IMO이로 이해되어야한다라고하지만 HTTP 기본 / 다이제스트 인증에 관해 설명 상태 코드가되는, 무단 (401)가 대신 사용한다. 당신이하고 있기 때문에 하지 사용 이러한 인증 방법 중 하나 인 경우 403이 적절한 상태 코드입니다.)


그러나 403 상태 코드를 사용 하면 서버가 해당 URL을 제공하는 것을 거부하더라도 해당 URL 이 포함 된 페이지 있다는 사실을 알 수 있습니다. 이것은 당신이 잠재적 인 침입자로부터 은폐 할 수 있다는 것이이 때, HTTP / 1.1 표준은 명시 적으로 허용 404 찾을 수 없음 상태 코드 (대신 반환 될 강조 광산) :

서버가 Request-URI와 일치하는 것을 찾지 못했습니다. 조건이 일시적인지 영구적인지에 대한 표시는 없습니다. 410 (Gone) 상태 코드는 서버가 내부적으로 구성 가능한 메커니즘을 통해 오래된 리소스를 영구적으로 사용할 수없고 전달 주소가 없음을 알고있는 경우 사용해야합니다. 이 상태 코드는 일반적으로 서버가 요청이 거부 된 이유를 정확히 밝히지 않거나 다른 응답이없는 경우에 사용됩니다.

물론 이러한 은폐를 효과적으로 적용하려면 반환하는 404 오류 페이지 가 존재하지 않는 실제 페이지에 대해 반환하는 것과 동일하게 나타나야합니다 . 그렇지 않으면 멍청하고 가장 우연한 공격자 만 속일 것입니다. (목표가 페이지를 Google 색인에서 제외시키는 것이라면 403 응답도 마찬가지입니다.)


질문에 제안 된 다른 가능한 답변과 다른 답변은 어떻습니까?

앞서 언급했듯이 여기에서는 401 응답이 적합하다고 생각하지 않습니다. 그것은 수 있습니다 대부분의 브라우저로하는 한, 실제로 일을하고 엔진이 어떤 잘못되었거나 알 수없는 4 처리합니다 검색 XX 가 404 인 것처럼 일련의 응답 코드를, 그러나에 따라 여전히 유효 아니다는 HTTP 사양, 그리고 선호하는 실질적인 이유가 없다 403 또는 404 이상.

별도의 "404 오류"페이지로 301 (또는 302) 리디렉션을 사용하는 경우, 이는 조잡한 mod_rewrite 자습서에 의해 끔찍한 연습이며 404 응답을 직접 반환하는 것과 비교하여 상환 기능이 전혀 없습니다.

  • 방문 하려는 URL이 오류 페이지의 URL로 대체되어 방문자에게 혼란을 줍니다. 따라서 존재하지 않는 페이지에 도달했다는 메시지가 표시되지만 방문하려는 페이지 가 무엇인지 쉽게 알 수 없으므로 URL에 오타 수정과 같은 복구 전략을 쉽게 시도 할 수 없습니다. 또는 Google 또는 Wayback Machine에 복사하여 붙여 넣기

  • 특히 404 페이지가 robots.txt 에서 허용되지 않거나 실제 404 상태 코드 ( "soft 404" ) 대신 200 OK 응답을 잘못 반환하면 검색 엔진이 혼동 될 수 있으며 이로 인해 404 페이지가 검색에 나타날 수 있습니다 임의 검색어에 대한 결과.

  • 존재하지 않는 (또는 은폐 된) 페이지에 대한 모든 요청에 ​​이제 추가 HTTP 라운드가 포함되므로 서버에 (소량의) 추가로드가 발생하고 방문자에 대한 응답 시간이 증가하며 사이트를 크롤링하는 검색 엔진 속도가 느려질 수 있습니다. 여행.

  • 404 페이지로 리디렉션 된 페이지의 "링크 주스"가 손실되므로 SEO 혜택이 없습니다.

(물론, 당신은 하나의 상황 수행은 실제로 페이지가 될 때 404 응답 대신 301 리디렉션을 사용하고자 했다 이동, 당신은 올바른 위치에 방문자를 리디렉션 할 수 있습니다.하지만 그 사건은 여기서 논의하지 않습니다.)


마지막으로, 여기에 많은 의견으로 표현 된 것처럼, 단순히 이와 같은 관리자 페이지를 "숨기는"것은 적절한 암호 기반 인증을 위한 적절한 대체물 이 아니라는 감정을 반영하고 싶습니다 . 즉, 말했다 경우 이미 보안 인증 시스템이에, 페이지가 상당히 약한 불구하고, 별도의 층으로 유용 할 수 있습니다 숨어 설정이 깊이 방어 방법.


나는 마지막으로 두 번째 부분에서 제안한 것을 선택하기로 결정했습니다. 유효한 키가없는 페이지에 방문하는 사람은 일반 404 페이지를 볼 수 있으며 물론 프로세스에서 상태 코드 404를 반환합니다.
WPRookie82

1

noindex,nofollow,noarchive검색을 중단하려는 페이지 헤드에 태그를 사용합니다 .

나는 것으로 나타났습니다 noarchive(가) 반면, 태그, 굉장히 빠른 검색에서 일을 얻을하는 경향이 noindex검색에 들어가기을 중지 할 수 있지만 이미 거기, 당신이 필요로하는 경우 검색 결과의 이물질을 세정 할 수 있습니다.

관리자 액세스 질문과 관련하여 여기 다른 사람들은 이미 체크 아웃하는 것이 좋습니다 보안에 대한 몇 가지 조언을 제공했습니다.

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