403, 401 değildir; 404 de değildir
401 Unauthorized, sunucunun kimlik bilgisi istediği ya da gönderdiklerinizin kabul edilmediği anlamına gelir. Geçerli kimlik bilgisi göndermek cevabı değiştirir.
403 Forbidden, sorunun kimlik bilgisi olmadığı anlamına gelir. İstek anlaşılmış ve reddedilmiştir. Giriş yapmak işe yaramayabilir, çünkü sizi reddeden şey kim olduğunuzu umursamıyor olabilir.
404 bazen bir yolun var olduğunu doğrulamamak için 403 yerine bilerek kullanılır. Aynı URL için bir ortamda 403, başka bir ortamda 404 kovalıyorsanız, bu fark bir hata değil bir yapılandırma tercihidir.
Katman 1 — origin'iniz reddetti
En yalın durum. Dosya var ama web sunucusu onu sunmuyor: web kullanıcısını dışarıda bırakan dizin izinleri, index dosyası olmayan ve listelemesi kapalı bir dizin, bir .htaccess ya da nginx deny kuralı, veya bir rol kontrolü yapıp kendisi 403 dönen bir uygulama.
Nasıl tanınır. Hata sayfası sizin yığınınıza benzer: bir Apache ya da nginx varsayılan sayfası, ya da kendi uygulamanızın tasarımlı "erişiminiz yok" ekranı. Origin erişim logunuzda istek 403 durumuyla görünür — asıl ipucu budur, çünkü istek origin'e ulaşmıştır.
Katman 2 — bir WAF kuralı eşleşti
Web uygulama güvenlik duvarı isteği inceler ve bir saldırı imzasıyla eşleştiğinde engeller. Kafa karıştıran 403'leri üreten katman budur, çünkü istek onu yapan kişinin gözünde son derece masumdur.
Alışıldık yanlış pozitifler egzotik şeyler değildir: bir kod örneğinde SELECT kelimesi geçen bir yazıyı kaydeden CMS editörü, içinde HTML parçası taşıyan bir form alanı, belirli bir yerde kesme işareti bulunan bir ürün açıklaması. Bir WAF ile gelen kural setleri enjeksiyon denemelerini yakalamak için yazılmıştır ve insan metni bazen bir denemeye benzer.
cdn.com.tr'de WAF, OWASP Core Rule Set ile çalışan ModSecurity'dir ve engellenen bir istek, referans numarası taşıyan markalı bir 403 sayfası alır. O numara işin tam kalbidir: denetim loguna yazılan istek tanımlayıcısıdır, yani tahmin etmek yerine hangi kuralın hangi alanda eşleştiğini birebir bulabilirsiniz. Paneldeki WAF log sayfası, engellenen olayları saldırı kategorisi, ülke, IP ve tetiklenen kuralla birlikte listeler.
Korumanızı elinizde bırakan çözüm. Bir kural ailesini her yerde devre dışı bırakmak ya da site için WAF'ı kapatmak yerine, belirli yoldaki belirli alanı muaf tutun — örneğin editör URL'sindeki yazı gövdesini. Dar bir istisna size hiçbir şeye mal olmaz; geniş olanı sessizce diğer bütün sayfaların korumasını kaldırır.
Katman 3 — bir ülke ya da ağ engeli
Coğrafi ve ağ engelleri istek uygulamanıza ulaşmadan uygulanır ve onlar da 403 üretir. Bir ülke kara listeniz varsa, o ülkedeki herkes reddi görür. ASN ile engelliyorsanız — otonom sistem numarası, yani bir sağlayıcının bütün ağı — o sağlayıcıdaki her ziyaretçi reddedilir; bu da kulağa geldiğinden çok daha geniş bir ağdır.
Bilmeye değer tuzak. Mobil operatörler milyonlarca sıradan aboneyi birkaç ASN'nin arkasına koyar ve mobil IP'ler döner. Wi-Fi'da sorunsuz gezinen bir ziyaretçi mobil veride reddedilebilir ve bunu "site telefonumda bozuk" diye anlatır. 403 bildirimleriniz mobil ağlarda kümeleniyorsa, uygulamanıza bakmadan önce engellerinize bakın.
Bu tür engelleri belirli aralıklarla gözden geçirmeye değer. Bir olay sırasında eklenen kural, olaydan uzun yaşamaya eğilimlidir.
Katman 4 — hotlink koruması ve IP listeleri
Hotlink koruması, Referer başlığı başka bir site olduğunda görsellerinize ve dosyalarınıza gelen istekleri reddeder. İşini yapar, ama unuttuğunuz meşru trafiği de reddeder: kendi staging alan adınız, bir görseli işleyen e-posta istemcisi, hiç referer göndermeyen bir uygulama. Belirti özgül ve tanınabilirdir — sayfalar yükleniyor, görseller yüklenmiyor.
IP izin ve ret listeleri en kaba katmandır. Bir yönetim yolundaki izin listesi mükemmel bir kontroldür — ta ki ofis IP'niz değişene ve listenin varlığını kimse hatırlamayana kadar. Bir 403 yalnızca tek bir kişiyi etkiliyorsa, sebep genelde budur.
Sebebi sırayla nasıl bulursunuz
Dıştan içe doğru çalışın. Dakikalar sürer ve tahmin etmekten iyidir.
1. Hata sayfasını okuyun. Referans numarası taşıyan markalı bir sayfa, edge kararı demektir — bir WAF kuralı, coğrafi ya da ASN engeli. Varsayılan bir sunucu sayfası ya da kendi uygulamanızın tasarımı ise kararı origin vermiştir.
2. Referans numarası varsa arayın. WAF logu size kural numarasını, eşleşen alanı ve tetikleyen değeri verir. Belirtiden sebebe giden en kısa yol budur ve konuşmayı "site beni ara sıra engelliyor"dan "942100 numaralı kural yazı gövdesiyle eşleşti"ye çevirir.
3. Yalnızca siz misiniz, kontrol edin. Başka bir ağdan ya da mobil bağlantıdan deneyin. Yalnızca sizseniz IP listelerine bakın. Bir ülkeden gelen herkesse coğrafi engellerinize bakın.
4. Yalnızca tek bir yol mu, kontrol edin. Sitenin geri kalanı çalışırken tek bir URL'nin reddedilmesi, origin'in kendi kurallarını ya da o yola bağlı bir WAF kuralını işaret eder.
5. Origin'e ancak bundan sonra bakın. İstek origin erişim logunuzda hiç görünmüyorsa oraya varmadan reddedilmiştir ve origin'de değiştireceğiniz hiçbir şey yardımcı olmaz.
Korumayı kaybetmeden düzeltmek
WAF meşru bir isteği engellediğinde ilk refleks, o site için WAF'ı kapatmaktır. Belirti kaybolur anlamında işe yarar; bir yandan da aklınızda olmayan diğer bütün isteklerin korumasını kaldırır.
Daha iyi bir sıra: engeli yeniden üretin, logdan kural numarasını okuyun, o kural için o alanda ve o yolda bir istisna yazın, sonra yeniden deneyip isteğin geçtiğini ve kuralın başka yerlerde hâlâ tetiklendiğini doğrulayın. cdn.com.tr'de dağıtım kuralları ile güvenlik ön ayarlarının varlık sebebi tam olarak budur — istisna yapılandırmada yaşar, her edge'e dağıtılır ve etkinlik geçmişinde değişikliği yapan kişiyle, öncesi ve sonrasındaki değerlerle birlikte görünür.
Engeli yeniden üretemiyorsanız istisna yazmaya başlamayın. Sebebi olmayan bir kural için yazılmış istisna, karşılığında hiçbir şey almadan kaldırılmış korumadır.
403 Forbidden SSS
Neden aynı URL bir tarayıcıda çalışıp diğerinde çalışmıyor?
İstekler birebir aynı değil. Farklı user agent'lar, farklı çerezler ve özellikle farklı ağlar — biri Wi-Fi'da, diğeri mobil veride olan iki tarayıcı farklı IP adreslerinden çıkar. Ret tarayıcıyı değil ağı takip ediyorsa, uygulamanıza değil IP, ülke ya da ASN engellerine bakın.
WAF, yazı kaydederken kendi editörümü engelliyor. Neyi değiştirmeliyim?
Engellenen olaydan kural numarasını bulun, sonra o kuralı editörün gönderdiği alan için editör URL'sinde muaf tutun. Yolun tamamını muaf tutmayın ve kural ailesini site genelinde kapatmayın: aynı kurallar diğer formlarınızı da koruyor ve enjeksiyon denemeleri meşru metnin geldiği alanlardan geliyor.
403 önbelleğe alınabilir mi?
Alınabilir ve önbelleğe alınmış bir 403 tatsız bir sürprizdir, çünkü sebep ortadan kalkarken belirti kalır. Hata yanıtları genel olarak kısa bir TTL ile sunulmalı ya da hiç önbelleğe alınmamalıdır. Sebebi düzelttiğiniz hâlde ziyaretçiler reddi görmeye devam ediyorsa, hata ayıklamayı sürdürmeden önce o yolu purge'leyin.
Hata sayfasındaki referans numarası ne işe yarar?
Denetim logundaki tam olarak o isteğin tanımlayıcısıdır. Ziyaretçi size gönderir, siz hangi kuralın hangi alanda, hangi değerle tetiklendiğini bulursunuz. O olmadan "ara sıra 403 alıyorum" bildirimini araştırmak neredeyse imkânsızdır.
403 SEO'ma zarar verir mi?
Dizine girmesini istediğiniz bir sayfadaki 403 verir, çünkü tarayıcı botu da diğer istemciler gibi reddedilir ve URL'yi eninde sonunda düşürür. Dikkat edilecek durum, arama motoru botlarını da yakalayan fazla geniş bir engeldir — önemsediğiniz sayfaların yalnızca tarayıcınıza değil, bir bota da 200 döndüğünü doğrulayın.