403 Forbidden: Nedenleri, Çözümleri ve Bot Engelleri
Bir 403 Forbidden, sunucunun isteği mükemmel bir şekilde anladığı ve sunmayı reddettiği anlamına gelir, ve giriş yapmak bunu değiştirmez. Kimlik bilgisi isteyen bir 401'in aksine, bir 403 bir karardır: bu istemciye, bu istekte, izin verilmiyor.
403'e karşı 401
RFC 9110 çizgiyi net bir şekilde çizer. Bir 401 Unauthorized, kimlik doğrulamanın gerekli olduğu veya verilen kimlik bilgilerinin kabul edilmediği anlamına gelir, ve yanıt nasıl kimlik doğrulanacağını açıklayan bir WWW-Authenticate başlığı taşımalıdır. Bir 403 Forbidden, sunucunun isteği yetkilendirmeyi reddettiği anlamına gelir, ve yeniden kimlik doğrulamak yardımcı olmaz.
Spesifikasyon ayrıca, bir sunucunun bir kaynağın var olduğunu hiç ortaya çıkarmak istemediğinde 403 yerine 404 yanıtlamasına izin verir. Bu yüzden orada olduğunu bildiğiniz bir URL, sertleştirilmiş bir sunucudan "bulunamadı" olarak geri gelebilir. Bir 403'ü çözümlüyorsanız, tersi durumun da var olduğunu unutmayın.
403'ü ne üretir
- Dosya sistemi izinleri. Web sunucusu süreci dosyayı okuyamaz veya dizinden geçemez. Elle bir dosya kopyalamadan veya sahipliği değiştiren bir geri yüklemeden sonra klasik bir durum.
- Dizin listeleme kapalı. İndeks dosyası olmayan bir klasör isteği, listelemeleri reddetmek üzere yapılandırılmış sunucularda 403 döndürür. Doğru davranış, kafa karıştırıcı hata.
- Uygulama yetkilendirme kuralları. Kullanıcı giriş yapmıştır ama o kaynak için gereken role, plana veya kiracı üyeliğine sahip değildir.
- IP izin ve ret listeleri. Ofis adresleriyle sınırlı bir yönetici yolu, evden veya mobil bir ağdan test eden herkes dahil, herkes başkası için 403 döndürür.
- Web uygulaması güvenlik duvarı kuralları. Bir WAF, URL'si, başlıkları veya gövdesi bir imzayla eşleşen bir isteği engeller. Genellikle istek size tamamen masum görünür.
- Coğrafi engelleme. Bazı ülkelerden veya bölgelerden gelen trafik kenarda reddedilir, bu yüzden site bir kıtadan sorunsuzken diğerinden yasaktır.
- Hotlink koruması.
Refererbaşlığı eksik olan veya başka bir alan adına işaret eden resim veya medya isteklerini reddeden bir kural. Yönlendireni olmayan istekler genellikle kazara yakalanır. - Bot ve kullanıcı aracısı filtreleme. İstek, ne istediğinden değil istemcinin kim olduğunu iddia ettiğinden dolayı engellenir. İzlemeyi yakalayan durum budur.
"Monitörler için 403, insanlar için 200" durumu
Bu, çalışma süresi izlemesindeki en yaygın sahte alarmdır, ve bir izleme hatası değildir. Site gerçekten 403 döndürüyordur, yalnızca tarayıcılara değil.
Bir CDN veya WAF'taki bot yönetimi, her isteği kullanıcı aracısına, TLS parmak izine, başlık sıralamasına, IP itibarına ve bir JavaScript veya etkileşimli mücadeleyi çözüp çözmediğine göre puanlar. Otomatik bir HTTP kontrolü, tasarım gereği, otomatik bir istemcidir: JavaScript mücadelelerini çalıştırmaz ve kendini dürüstçe tanımlar. Bu yüzden tarayıcınız sorunsuzca geçerken o zorlanır veya engellenir, ve sonuç, her insan çalıştığını doğrularken çökük olarak uyaran bir sitedir.
İki işaret bunu hızla tanımlar: 403, bir gecikmeden sonra değil anında gelir, ki bu da aşırı yükü dışlar, ve otomatik istemci için tutarlıdır, aynı ağdaki bir tarayıcıda ise asla tekrarlanamaz.
Bir izleme servisini nasıl izin listesine eklersiniz
- Engelin kimliğe dayalı olduğunu doğrulayın. İsteği önce düz bir HTTP istemcisi olarak, sonra bir tarayıcı kullanıcı aracısı dizesiyle tekrarlayın ve karşılaştırın:
Kodlar farklıysa, bunu bir kullanıcı aracısı kuralı yapıyordur.curl -sS -o /dev/null -w "%{http_code}\n" https://example.com/ curl -sS -o /dev/null -w "%{http_code}\n" -A "Mozilla/5.0" https://example.com/ - Tetiklenen kuralı bulun. WAF ve CDN kontrol panelleri, engellenen istekleri eşleşen kural kimliğiyle günlükler. Bu, hangi kuralı gevşeteceğinizi tahmin etmekten daha hızlı ve daha güvenlidir.
- Yapabildiğiniz yerde IP adresine göre izin listesine ekleyin. İzleme sağlayıcıları, kontrol noktalarının kullandığı adresleri yayınlar. Bunları bir atlama kuralı olarak eklemek kesindir ve başka kimse için korumayı zayıflatmaz.
- Veya kullanıcı aracısına göre izin listesine ekleyin. Kontrolü belirgin bir kullanıcı aracısı gönderecek şekilde yapılandırın ve onu muaf tutan bir kural ekleyin. Bu, bir IP listesinden daha kolay sürdürülür, ama bir kullanıcı aracısı herkes tarafından kopyalanabildiği için bunu bir güvenlik sınırı değil bir kolaylık olarak ele alın.
- Korumayı devre dışı bırakmak yerine bir atlama kuralını tercih edin. İzleme yolunu veya istemciyi belirli kuraldan muaf tutun, ve kural setinin geri kalanını yürürlükte bırakın.
- Birkaç bölgeden yeniden test edin. Bir kural, edge konumları arasında eşit olmayan şekilde uygulanabilir, bu yüzden bileti kapatmadan önce düzeltmeyi birden fazla yerden doğrulayın.
Botlarla ilgili olmayan bir 403'ü düzeltmek
- URL'nin hiç genel olması gerekip gerekmediğini kontrol edin. 403 soruşturmalarının yarısı, engelin doğru olduğu cevabıyla sonuçlanır.
- Yol üzerinde ve her üst dizinde dosya sahipliğini ve izinlerini doğrulayın. Sunucu sürecinin, dosyada yalnızca okuma izni değil, dizinlerde yürütme izni de gerekir.
- URL bir dizinse bir indeks dosyası arayın, veya isteniyorsa kasıtlı olarak bir listeleme etkinleştirin.
- O yoldaki ret kuralları, IP kısıtlamaları ve yönlendiren kontrolleri için sunucu yapılandırmasını okuyun, sonra uygulamanın yetkilendirme katmanını.
- Kaynaktan önce kenarı kontrol edin. Kaynağı doğrudan isteyin. CDN'yi atladığınızda kaybolan bir 403, bir uygulama sorunu değil bir kenar kuralıdır.
Engeli kendi ağınızın dışından görmek
Bir WAF güncellemesi veya bir izin değişikliğiyle ortaya çıkan bir 403, içeriden bir kesinti gibi görünmez: oturumunuz kimlik doğrulanmıştır, adresiniz izin listesindedir, ve kontrol ettiğiniz sayfalar çalışan sayfalardır. Zamanlanmış bir HTTP kontrolü, önemli olan URL'lerde beklediğiniz kodu ağınızın dışından iddia eder, bu yüzden yeni yasaklanan bir sayfa hemen bir uyarı yükseltir. Coğrafi engeller ve kenar kuralları bölgeye göre değişir, bu yüzden bakış noktası sayısı önemlidir: HostTracker, 158 şehirdeki 300'den fazla kontrol noktasından kontrol eder, ki bu da "bazı ülkelerde yasak"ı konumlar arasında görünür bir farka dönüştürür. Ret geçiciyse ve kimlikten çok istek hacmine bağlıysa, kod genellikle bunun yerine 429 olur; bu, 429 Too Many Requests rehberinde ele alınır, ve daha geniş aile 4xx genel bakışındadır.