Der semantisch korrekte HTTP-Antwortcode für diese Situation wäre 403 Verboten :
Der Server hat die Anfrage verstanden, weigert sich jedoch, sie zu erfüllen. Die Autorisierung hilft nicht und die Anfrage sollte nicht wiederholt werden. Wenn die Anforderungsmethode nicht HEAD war und der Server veröffentlichen möchte, warum die Anforderung nicht erfüllt wurde, sollte der Grund für die Ablehnung in der Entität beschrieben werden. Wenn der Server diese Informationen dem Client nicht zur Verfügung stellen möchte, kann stattdessen der Statuscode 404 (Nicht gefunden) verwendet werden.
(Obwohl die Definition der 403-Antwort besagt, dass "Autorisierung nicht hilft", sollte IMO dies so verstehen, dass es sich speziell auf die HTTP Basic / Digest-Authentifizierung bezieht , für die stattdessen der Statuscode 401 Unauthorized verwendet werden sollte. Da Sie nicht verwenden Bei jeder dieser Authentifizierungsmethoden ist 403 in Ihrem Fall der entsprechende Statuscode.)
Allerdings zeigt einen 403 - Statuscode (oder zumindest impliziert stark) die Tatsache , dass es ist eine Seite mit dieser URL, obwohl der Server um es zu liefern verweigert. Da dies etwas ist, das Sie möglicherweise vor potenziellen Eindringlingen verbergen möchten, erlaubt der HTTP / 1.1-Standard explizit die Rückgabe des Statuscodes 404 Not Found stattdessen ( Hervorhebung von mir):
Der Server hat nichts gefunden, das mit dem Request-URI übereinstimmt. Es wird kein Hinweis darauf gegeben, ob der Zustand vorübergehend oder dauerhaft ist. Der 410 (Gone) -Statuscode sollte verwendet werden, wenn der Server über einen intern konfigurierbaren Mechanismus weiß, dass eine alte Ressource dauerhaft nicht verfügbar ist und keine Weiterleitungsadresse hat.
Dieser Statuscode wird häufig verwendet, wenn der Server nicht genau angeben möchte, warum die Anforderung abgelehnt wurde, oder wenn keine andere Antwort zutreffend ist.
Um eine solche Verschleierung überhaupt wirksam zu machen, muss die von Ihnen zurückgegebene 404-Fehlerseite natürlich mit der identisch sein, die Sie für tatsächlich nicht vorhandene Seiten zurückgeben. Andernfalls täuscht es nur die dümmsten und gelegentlichsten Angreifer. (Wenn Ihr Ziel nur darin besteht, die Seiten aus dem Google-Index herauszuhalten, funktioniert eine 403-Antwort genauso gut.)
Was ist mit den anderen möglichen Antworten, die in Ihrer Frage vorgeschlagen wurden, und den anderen Antworten?
Wie ich bereits erwähnt habe, glaube ich nicht, dass eine 401-Antwort hier angemessen ist. Es kann in der Praxis, soweit die meisten Browsern und Suchmaschinen wird jede fehlerhafte oder unbekannte 4 behandeln xx Serie Antwortcode , als ob es sich um eine 404 waren, aber es ist noch nicht gültig gemäß der HTTP - Spezifikation, und es gibt keinen praktischen Grund , es zu bevorzugen über 403 oder 404.
Die Verwendung einer 301- (oder 302-) Umleitung auf eine separate "404-Fehler" -Seite ist eine schreckliche Praxis, die durch schlampige mod_rewrite-Tutorials verbreitet wird, und hat absolut keine einlösenden Funktionen im Vergleich zur direkten Rückgabe einer 404-Antwort:
Es ist verwirrend für die Besucher, wie die URL sie versuchen zu Besuch durch die URL der Fehlerseite ersetzt wird. Daher wird eine Meldung angezeigt, die besagt, dass sie eine nicht vorhandene Seite erreicht haben, aber keinen leicht sichtbaren Hinweis darauf, welche Seite sie besuchen wollten. Daher können sie keine Wiederherstellungsstrategien wie das Beheben offensichtlicher Tippfehler in der URL versuchen. oder kopieren und einfügen in Google oder die Wayback-Maschine.
Dies kann Suchmaschinen verwirren, insbesondere wenn Ihre 404-Seite in robots.txt nicht zulässig ist oder wenn fälschlicherweise eine 200-OK-Antwort anstelle eines echten 404-Statuscodes ( "soft 404" ) zurückgegeben wird, was möglicherweise dazu führt, dass Ihre 404-Seite in der Suche angezeigt wird Ergebnisse für zufällige Suchbegriffe.
Dies führt zu einer (zusätzlichen) zusätzlichen Belastung Ihrer Server, erhöht die Antwortzeit für Besucher und verlangsamt möglicherweise das Crawlen Ihrer Website durch Suchmaschinen, da jede Anforderung einer nicht vorhandenen (oder verborgenen) Seite jetzt eine zusätzliche HTTP-Runde umfasst. Ausflug.
Es hat keinen SEO-Vorteil, da jeglicher "Link-Saft" von Seiten, die auf eine 404-Seite umgeleitet wurden, sowieso verloren geht.
(Natürlich ist die eine Situation , wo Sie tun wollen stattdessen eine 301 - Weiterleitung auf die Verwendung eines 404 - Antwort, wenn die Seite tatsächlich hat bewegt, und Sie können die Besucher an die richtige Position umgeleitet werden . Aber das ist hier nicht der Fall diskutiert.)
Abschließend möchte ich das in vielen Kommentaren zum Ausdruck gebrachte Gefühl wiederholen, dass das bloße "Verstecken" Ihrer Administrationsseiten auf diese Weise kein angemessener Ersatz für eine ordnungsgemäße kennwortbasierte Authentifizierung ist . Das sei gesagt, wenn Sie bereits ein sicheres Authentifizierungssystem eingerichtet haben, versteckt die Seiten als eine zusätzliche Schicht, wenn auch eine ziemlich schwachen nützlich sein können, in einem gestaffelten Sicherheitsansatz.