301 404 sayfasına yönlendiriyor veya durum kodunu 404 olarak ayarlayıp sayfada kalıyor mu?


9

Web sitemde, yalnızca yöneticilerin bu sayfalara erişebileceği ve erişebileceği bir sorgu dizesi değeri bulunursa ve doğru şekilde ayarlanırsa, bu sayfalara erişilebilecek bir dizi sayfa var. Örneğin:

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


Yukarıdaki bağlantı sayfanın içeriğini gösterecek, ancak aşağıdaki gibi bir şey gösterilmeyecektir:

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


Şimdi arama motorları ve / veya yönetici olmayan kullanıcılar bir şekilde bu gizli sayfalara gelirse ne yapacağımı düşünüyordum.

Tabii ki sayfanın durum kodunu 404 olarak değiştirebilirim ya da 301 yönlendirmesini yapabilirim

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


Google ve SEO açısından en iyi çözüm nedir?


6
Gizlemeye çalıştığınız bilgilerin herhangi bir önemi varsa, bunun yerine gerçek kimlik doğrulamasını uygulamayı düşünürüm. Bunun dışında, 301 yönlendirmesi anlamsal olarak içeriğin taşındığını gösterir; bu durum burada böyle değildir ve bu nedenle uygunsuz bir yanıttır.
Sen

Yanıtlar:


11

Doğru kod 401 Yetkili Değil

HTTP spesifikasyonlarına göre

10.4.2 401 Yetkisiz

İstek için kullanıcı kimlik doğrulaması gerekiyor. Yanıt, istenen kaynağa uygulanabilecek bir zorluk içeren bir WWW-Authenticate başlık alanı (bölüm 14.47) içermelidir ZORUNLU. Müşteri isteği uygun bir Yetkilendirme başlığı alanı ile tekrarlayabilir (bölüm 14.8). İstek zaten Yetkilendirme kimlik bilgilerini içeriyorsa, 401 yanıtı bu kimlik bilgileri için yetkinin reddedildiğini gösterir. 401 yanıtı, önceki yanıtla aynı sorguyu içeriyorsa ve kullanıcı aracısı en az bir kez kimlik doğrulama girişiminde bulunmuşsa, kullanıcıya ilgili tanılama bilgilerini içerebileceğinden yanıtta verilen varlığa SUNULMALIDIR. HTTP erişim kimlik doğrulaması "HTTP Kimlik Doğrulaması: Temel ve Özet Erişim Kimlik Doğrulaması" [43] bölümünde açıklanmıştır.

Veya alternatif olarak

10.4.4 403 Yasak

Sunucu isteği anladı, ancak yerine getirmeyi reddediyor. Yetkilendirme yardımcı olmaz ve istek tekrarlanmamalıdır. İstek yöntemi HEAD değilse ve sunucu, isteğin neden yerine getirilmediğini halka duyurmak istiyorsa, kuruluştaki ret nedenini açıklamalıdır. Sunucu bu bilgileri istemcinin kullanımına açmak istemiyorsa, bunun yerine 404 (Bulunamadı) durum kodu kullanılabilir.

Bunların her ikisi de anlamsal olarak daha doğrudur 404. Kaynak var, bu yüzden 404doğru değil. 401doğru olmalı, ancak kimlik doğrulaması gerektirmiyorsunuz. Belirsiz güvenlik, güvenlik değildir. 403ayrıca istek anlaşıldığı gibi doğrudur, kaynak var, sadece talebe hizmet vermeyi reddeder. 404neden 403olduğunu açıklamak istemiyorsanız uygundur .

Her durumda 301yönlendirmeler uygun değildir , kaynak taşınmamıştır.


2
Google, 401/403 durum mesajlarını döndüren sayfaları dizine eklemez ve kaldırmaz, benzer bir soru bir süre sonra tekrar sorulmuştur Alternatif olarak her zaman basit bir noindex kullanabilir ve robots.txt kullanarak
Simon Hayter

1
@ WPRookie82 Sayfayı gizli tutarak koruma hakkında - yanlış yapıyorsunuz.
Cthulhu

4
belirsizliğe göre güvenlik hiç bir güvenlik değildir

1
HTTP Temel veya Özet kimlik doğrulaması (veya diğer RFC2617 uyumlu kimlik doğrulama düzenleri) dışındaki kimlik doğrulama yöntemleri için 401'in kullanımı burada daha önce tartışılmıştır ; Hala stand by anda benim görüşüm, tam o olabilir pratikte faydalı olur ancak uygun gerçekten geçerli değil HTTP Spec ve her durumda, 403 ve hatta 404 tercih olacağını söyledi.
Ilmari Karonen

1
HTTP spesifikasyonlarına göre 401 Yetkisiz'in uygun olmadığını diğer yorumlara katılıyorum.
Stephen Ostermiller

1

Bu, "anahtar" parametresiyle veya parametresiz yöneticiler için bir sayfa olduğundan, sayfalar dizine eklenemez ve dizine eklenmemelidir. Bu nedenle, yönetici olmayanların web sayfası 404 durum kodu gönderebilir ve aynı URL'yi olduğu gibi bırakabilirsiniz. Google'a sayfanın taşındığını söylediğinizden, daha sonra var olmayan bir sayfaya yönlendirme yapmayın.

Google da böyle yapar. Sahte bir sayfaya gittiğinizde neler olduğunu görün: http://www.google.com/analytics/asdsas


Yukarıdaki yazıma küçük bir düzeltme http://www.example.com/404-errorvar, tüm web sitesinin bir tür küresel 404 sayfası var, bu yüzden varolmayan bir sayfaya yönlendirme yapamadım.
WPRookie82

@ WPRookie82: Siz ve web sunucunuz dışında herhangi biri söz konusu olduğunda, var olmayan bir sayfa ile mevcut bir sayfa arasında 404 yanıtı döndüren bir fark yoktur.
Ilmari Karonen

1

Bu durum için anlamsal olarak doğru HTTP yanıt kodu 403 Yasak olacaktır :

Sunucu isteği anladı, ancak yerine getirmeyi reddediyor. Yetkilendirme yardımcı olmaz ve istek tekrarlanmamalıdır. İstek yöntemi HEAD değilse ve sunucu, isteğin neden yerine getirilmediğini halka duyurmak istiyorsa, kuruluştaki ret nedenini açıklamalıdır. Sunucu bu bilgileri istemcinin kullanımına sunmak istemiyorsa, bunun yerine 404 (Bulunamadı) durum kodu kullanılabilir.

(403 yanıtının tanımı o "yetki değildir yardım edecek", IMO bu şekilde anlaşılmalıdır diyor rağmen HTTP Temel / Özet kimlik doğrulaması için özel olarak atıfta durum kodu olan, Yetkisiz 401 yerine kullanılmalıdır. Eğer konum beri değil kullanılarak bu kimlik doğrulama yöntemlerinden herhangi biri, 403 sizin durumunuza uygun durum kodudur.)


Ancak, 403 durum kodu kullanarak oradaki (veya en azından kuvvetle ima) gerçeğini ortaya koymaktadır olan sunucu teslim reddediyor olsa da, Bu URL'ye sahip bir sayfa. Bu potansiyel davetsiz misafirlerden gizlemek isteyebileceğiniz bir şey olduğundan, HTTP / 1.1 standardı 404 Bulunamadı durum kodunun açıkça döndürülmesine izin verir ( benimkini vurgulayın ):

Sunucu, İstek URI'sı ile eşleşen bir şey bulamadı. Koşulun geçici mi yoksa kalıcı mı olduğuna dair herhangi bir gösterge yoktur. 410 (Gitti) durum kodu, sunucu dahili olarak yapılandırılabilir bir mekanizma aracılığıyla eski bir kaynağın kalıcı olarak kullanılamadığını ve yönlendirme adresi olmadığını biliyorsa kullanılmalıdır. Bu durum kodu genellikle sunucu, isteğin neden reddedildiğini tam olarak açıklamak istemediğinde veya başka bir yanıt olmadığında kullanılır.

Elbette, böyle bir gizliliği etkili hale getirmek için, döndürdüğünüz 404 hata sayfasının gerçek olmayan sayfalar için döndürdüğünüzle aynı görünmesi gerekir . Aksi takdirde, sadece en aptal ve en sıradan saldırganları kandırır. (Amacınız sayfaları yalnızca Google dizininden uzak tutmaksa, bunu da 403 yanıt verecektir.)


Sorunuzda önerilen diğer olası yanıtlar ve diğer yanıtlar ne olacak?

Daha önce de belirttiğim gibi, burada 401 yanıtının uygun olduğuna inanmıyorum. Bu olabilir çoğu tarayıcı olarak sürece, uygulamada çalışmak ve motorlar herhangi bozuk veya tanınmayan 4 davranacak arama xx bir 404 sanki serisi yanıt kodu, ancak uygun hala geçerli değil HTTP Spec ve tercih edebilecekleri herhangi bir sebep yok 403 veya 404'ün üzerinde.

Ayrı bir "404 hatası" sayfasına bir 301 (veya 302) yönlendirmesi kullanmaya gelince, bu , özensiz mod_rewrite öğreticileri tarafından yayılan korkunç bir uygulamadır ve doğrudan bir 404 yanıtı döndürmeyle karşılaştırıldığında kesinlikle hiçbir kullanma özelliği yoktur:

  • Ziyaret etmeye çalıştıkları URL'nin yerine hata sayfasının URL'si geldiği için ziyaretçiler için kafa karıştırıcı . Bu nedenle, var olmayan bir sayfaya ulaştıklarını belirten bir mesaj görürler, ancak ziyaret etmeye çalıştıkları sayfanın ne olduğunu kolayca görünür bir şekilde göstermezler ve bu nedenle URL'deki belirgin yazım hatalarını düzeltmek gibi herhangi bir kurtarma stratejisini kolayca deneyemezler, veya Google'a veya Wayback Machine'e kopyalayıp yapıştırabilirsiniz.

  • Özellikle 404 sayfanız robots.txt dosyasında izin verilmiyorsa veya gerçek bir 404 durum kodu ( "yumuşak 404" ) yerine 200 OK yanıtı döndürürse, bu durum 404 sayfanızın aramada görünmesine neden olabilirse, arama motorlarını şaşırtabilir. rastgele arama terimleri için sonuçlar.

  • Sunucularınızda ekstra yüke neden olur (az miktarda), ziyaretçilerin yanıt süresini artırır ve mevcut olmayan (veya gizli) bir sayfa için her istek artık fazladan bir HTTP turu içerdiğinden, potansiyel olarak sitenizi tarayan arama motorlarını yavaşlatır. çaldırırlar.

  • Bir 404 sayfasına yönlendirilen sayfalardan herhangi bir "bağlantı suyu" yine de kaybolur gibi SEO faydası yoktur.

(Elbette, bir durum yapmak aslında sayfa edildiğinde 404 yanıtının yerine bir 301 yönlendirmesi kullanmak istediğiniz gelmiştir taşındı ve onun doğru konuma ziyaretçiyi yönlendirebilirsiniz. Ama bu durum burada ele değil.)


Son olarak, burada birçok yorumda ifade edilen, sadece yönetici sayfalarınızı bu şekilde "gizlemenin" uygun şifre tabanlı kimlik doğrulaması için yeterli bir alternatif olmadığını düşündüğüm yankıyı tekrarlamak istiyorum . Yani, söz konusu eğer zaten güvenli bir kimlik doğrulama sistemi içinde, sayfalar oldukça zayıf da olsa fazladan bir katman olarak yararlı olabilir gizleme kurmak zorunda derinlik savunma yaklaşımı.


Sonunda, ikinci bölümde önerdiklerinizi seçmeye karar verdim. Geçerli bir anahtar olmadan sayfaya kim gelirse normal 404 sayfamı görür ve tabii ki süreçte 404 durum kodunu döndürüyorum.
WPRookie82

1

Aramadan noindex,nofollow,noarchiveçıkmak istediğiniz sayfaların başında bir etiket kullanırdım .

noarchiveEtiketin aramadan çok çabuk şeyler alma eğiliminde olduğunu fark ettim , oysa noindexaramaya girmesini durdurabilir, ancak zaten oradaysa, arama sonuçlarından temizlemeniz gerekir.

Yönetici erişim sorusuna gelince, buradaki diğer çocuklar zaten güvenlik konusunda bazı tavsiyeler verdiler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.