Apache’de HTTP_REFERER Kullanarak Servlet Sayfalarına Kullanıcı Erişimini Engelleme
Web uygulamaları büyüdükçe, hassas sayfaların güvenliğini sağlama ve yetkisiz erişimden koruma ihtiyacı da artıyor, özellikle otomatik botlardan. Eğer belirli servlet sayfalarına kullanıcıların doğrudan erişimini engellemeniz gereken bir durumla karşı karşıyaysanız, ancak uygulama sunucusunu değiştirme yeteneğiniz yoksa, Apache’nin HTTP_REFERER
başlığını kullanmak çözümünüzün bir parçası olabilir.
Bu yazıda, .htaccess
dosyanızda HTTP_REFERER
kullanarak erişimi etkili bir şekilde nasıl engelleyebileceğinizi keşfedeceğiz, adımları ayrıntılı bir şekilde açıklayacak ve amacınıza ulaşmanıza yardımcı olmak için net örnekler sunacağız.
HTTP_REFERER’ı Anlamak
HTTP_REFERER
, istenen kaynağa bağlantı veren web sayfasının adresini tanımlayan bir HTTP başlığıdır. Basitçe söylemek gerekirse, bir kullanıcının belirli bir sayfaya erişmeden önce nereden geldiğini sunucunuza bildirir.
Erişimi Engellemek için Neden HTTP_REFERER Kullanmalıyız?
- Güvenlik Önlemi: Tamamen güvenilir olmasa da, yetkisiz erişime karşı ilk bir engel işlevi görür.
- Uygulama Kolaylığı: Web sunucusuna hakimseniz ancak uygulama mantığına erişiminiz yoksa, bu pratik bir yaklaşımdır.
- Otomatik Taleplerin Önlenmesi: Formlarınızı güvenli ve yalnızca meşru yollarla işlevsel tutmak istiyorsanız, dış kaynaklardan veya botlardan gelen doğrudan talepleri engellemek önemlidir.
.htaccess Yeniden Yazım Kurallarını Ayarlamak
HTTP_REFERER
temelinde engelleme uygulamak için, .htaccess
dosyanıza kurallar eklemeniz gerekecek. İşte kurallarınızı etkili bir şekilde yapılandırmanın yolu.
Temel Yeniden Yazım Kuralı
Bunu gibi basit bir kural ile başlayabilirsiniz:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://mywebaddress(.cl)?/.* [NC]
RewriteRule (servlet1|servlet2)/.+ - [F]
Açıklama:
RewriteEngine on
: Yeniden yazım motorunu etkinleştirir.RewriteCond
,HTTP_REFERER
‘ın belirtilen sitenizle eşleşmediğini kontrol eder.RewriteRule
,servlet1
veyaservlet2
‘ye yönelik istekleri hedef alır.
Gelişmiş Yeniden Yazım Kuralı
Ancak, yalnızca sitenizden gelen meşru istekleri geçerli kılmak ve sorgu dizeleri içerenleri engellemek istiyorsanız, daha karmaşık bir mantığa ihtiyacınız var:
RewriteCond %{HTTP_REFERER} !^http://mywebaddress(.cl)?/.* [NC]
RewriteCond %{QUERY_STRING} ^.+$ [OR]
RewriteCond %{REQUEST_METHOD} ^POST$ [OR]
RewriteCond %{PATH_INFO} ^.+$
RewriteRule (servlet1|servlet2)\b - [F]
Gelişmiş Kuralın Ayrıntılı Açıklaması:
- İlk Koşul: İsteklerin belirtilen site URL’lerinden gelmediğini doğrular.
- İkinci Koşul: Boş olmayan sorgu dizeleri içeren istekleri engeller.
- Üçüncü Koşul: Doğrudan POST isteklerini engeller.
- Dördüncü Koşul:
PATH_INFO
içeren istekleri engeller.
Bu koşulların birleşimi, yalnızca sitenizin ortamını geçerek gelen geçerli isteklerin belirtilen servlet sayfalarına ulaşmasını sağlar.
Sonuç
HTTP_REFERER
‘a güvenmek tamamen güvenli bir çözüm sağlamasa da, hassas sayfalara erişimi sınırlamak için etkili bir ilk önlemdir. Bu yöntem, uygulama düzeyindeki kısıtlamaların kapsamlı değişikliklere izin vermediği durumlarda özellikle faydalıdır.
Bu yaklaşımın bir güvenlik katmanı eklediğini fakat tam bir çözüm sunmadığını unutmayın. Her zaman sunucu tarafı doğrulaması güçlendirmeyi ve uygulamanız ve kullanıcı tabanınız geliştikçe ek güvenlik önlemlerini araştırmayı dikkate alın.
Bu yöntemleri denediyseniz veya ek bilgileriniz varsa, lütfen bir yorum bırakın—deneyimleriniz, başkalarının benzer zorluklarla başa çıkmasına yardımcı olabilir!