403 Forbidden
서버 와 관련된 일반적인 오해 (및 오용) 는 서버가 요청에 대해 어떻게 생각하는지에 대한 정보를 제공하지 않습니다. 구체적으로 말하면,
나는 당신이 요구하는 것을 얻지 만, 당신이 무엇을 시도하든 요청을 처리하지 않을 것입니다. 그러니 노력을 중단하십시오.
모든 UA 또는 고객 은 요청이 작동 하지 않는다는 의미로 해석하고 적절하게 응답해야합니다.
이는 사용자를 대신하여 요청을 처리하는 클라이언트에 영향을 미칩니다. 사용자가 로그인하지 않았거나 잘못 입력 한 경우 요청을 처리하는 클라이언트는 "죄송하지만 아무 것도 할 수 없습니다"라고 대답해야합니다. 그것은 도착 403
미래의 요청을 처리하고 정지합니다. 분명히 사용자가 실패한 후에도 개인 정보에 대한 액세스를 요청할 수있게하려면 이는 사용자에게 적대적인 행위입니다.
403
대조적이다 401 Authorization Required
하는 않는 서버가 당신이 올바른 자격 증명을 전달뿐만 요청을 처리 할 것을 멀리 제공합니다. 이것은 보통 사람들이들을 때 생각하는 것 403
입니다.
또한 404 Page Not Found
다른 사람들이 지적했듯이 "페이지를 찾을 수 없습니다"라고 말하고 서버가 향후 요청에 대해 성공 또는 실패를 주장하지 않는다는 것을 클라이언트에게 제안하도록 설계되었습니다.
으로 401
하고 404
, 서버는 그들이 진행하는 방법에 대한 클라이언트 또는 UA에 아무 말도하지 않습니다 그들은 다른 반응을 얻고 희망에 계속 시도 할 수 있습니다.
따라서 404
모든 사람에게 보여주고 싶지는 않지만 특정 상황에서 왜 표시하지 않는지에 대해서는 아무 것도 알려주고 싶지 않은 적절한 페이지 처리 방법입니다.
물론, 이는 요청을하는 클라이언트가 사소한 RFC 플립 플랜지를 처리한다고 가정합니다. 악의적 인 충분한 클라이언트는 부수적 인 방법을 제외하고 반환 된 상태 코드를 신경 쓰지 않습니다. 알려진 다른 사용자 페이지와 비교하여 숨겨진 사용자 페이지 (또는 잠재적 인 숨겨진 사용자 페이지)임을 알 수 있습니다.
즉, 핸들러가 users/*
입니다. 내가 알고있는 경우에 users/foo
, users/bar
및 users/baaz
작업, 서버가 반환 401
, 403
또는 404
위해 users/quux
나는이 믿을만한 이유가, 특히, 그것을 시도하지 않을거야 의미하지 않는다 이다quux
사용자. 표준 예제 시나리오는 Facebook입니다. 내 프로필은 비공개이지만 공개 프로필에 대한 의견은 아닙니다. 악의적 인 클라이언트는 404
내 프로필 페이지 로 돌아와도 내가 존재한다는 것을 알고 있습니다 .
따라서 상태 코드는 악의적 인 사용 사례가 아니라 규칙에 따라 행동하는 클라이언트를위한 것입니다. 그리고 해당 고객에게는 401
또는 404
요청이 가장 적합합니다.