
Bazı sayfalarınız yalnızca üyelere açık olmalı. Giriş kontrolü ekliyorsunuz ve iş bitmiş görünüyor — ta ki birisi doğrudan dosya adresini yazıp içeriğe ulaşana kadar.
Bu yazı, kısıtlı içeriği gerçekten korumayı ele alıyor.
İki Farklı Koruma Katmanı
Erişim kontrolü iki ayrı yerde uygulanmalıdır:
| Katman | Neyi korur |
|---|---|
| Sayfa seviyesi | HTML çıktısını |
| Dosya seviyesi | Doğrudan erişimi |
İkinci katman en sık atlanan koruma noktasıdır: sayfayı korumak, o sayfanın gösterdiği PDF veya videoyu korumaz — dosyanın adresini bilen herkes doğrudan indirebilir.
Bu, ücretli içerik sunan sitelerde ciddi bir gelir kaybına yol açar. Bir üye dosya adresini paylaşır ve içerik herkese açılır.
Dosyaları Korumak
Korumalı dosyalar için doğru yapı:
- Dosyaları web kökü dışına koyun.
- Doğrudan adresle erişilemesinler.
- Bir betik üzerinden sunun.
- Betikte yetki kontrolü yapın.
- Sonra dosyayı okuyup gönderin.
Birinci madde tek başına en güçlü korumadır: web kökünün dışındaki bir dosyaya hiçbir adresle doğrudan ulaşılamaz — yalnızca sizin betiğiniz okuyabilir.
Dosyaları web kökünde tutup adresi tahmin edilemez yapmak yeterli değildir. Adres bir kez paylaşıldığında koruma tamamen kalkar.
Beşinci adımda büyük dosyalarda dikkat gerekir — dosyayı tamamen belleğe alıp göndermek yerine parça parça okuyup aktarmak gerekir, aksi hâlde bellek limiti aşılır.
Basit Senaryolar İçin
Tam bir üyelik sistemi gerekmiyorsa daha hafif çözümler vardır:
- Sunucu seviyesi şifre koruması. Tek bir kullanıcı adı ve şifre.
- IP kısıtlaması. Belirli adreslerden erişim.
- Bağlantı ile paylaşım. Tahmin edilemez adres.
Birinci seçenek dakikalar içinde kurulur ve güçlüdür: sunucu seviyesindeki şifre koruması, uygulamanız hiç çalışmadan devreye girer — bir kod hatası bu korumayı delemez.
Test ortamları, yönetim panelleri ve dar bir gruba açık içerikler için ideal bir çözümdür.
Üçüncü seçenek ise korumadan çok bir kolaylıktır. Tahmin edilemez bir adres, paylaşılınca herkese açılır — hassas içerik için kullanılmamalıdır.
Yetki Seviyeleri
Üyelik sisteminde tek bir "giriş yaptı" kontrolü genellikle yetmez:
| Kontrol türü | Örnek |
|---|---|
| Kimlik doğrulama | Giriş yapmış mı? |
| Rol kontrolü | Yönetici mi? |
| Sahiplik kontrolü | Bu kayıt onun mu? |
| Abonelik kontrolü | Ödemesi geçerli mi? |
Üçüncü satır en sık atlanan ve en tehlikeli eksiktir: giriş yapmış bir kullanıcının, adres satırındaki kayıt numarasını değiştirerek başkasının verisine ulaşması, çok yaygın bir açıktır.
Kimlik doğrulama "kimsin" sorusunu yanıtlar; sahiplik kontrolü "bu senin mi" sorusunu. İkisi ayrı kontrollerdir ve her ikisi de gereklidir.
Güvenli Varsayılan
Erişim kontrolünde yaklaşım biçimi belirleyicidir:
- Varsayılan olarak reddedin.
- Yalnızca açıkça izin verilenlere erişim olsun.
- Yeni sayfa eklendiğinde otomatik korumalı olsun.
Bu yaklaşım bir sınıf hatayı önler: "korunacak sayfaları listeleme" yönteminde, yeni eklenen bir sayfayı listeye eklemeyi unutmak onu herkese açık bırakır.
Tersi yaklaşımda ise unutmanın sonucu, sayfanın erişilemez olmasıdır — fark edilir ve düzeltilir. Güvenlik açısından bu çok daha iyi bir başarısızlık biçimidir.
Önbellek Tuzağı
Kısıtlı içerikte önbellekleme ciddi bir risk üretir:
- Üyeye özel sayfa önbelleğe alınabilir.
- Sonraki ziyaretçiye sunulabilir.
- Tarayıcı geri tuşuyla gösterebilir.
- Ara sunucular saklayabilir.
İkinci madde en ağır senaryodur: bir üyenin gördüğü sayfa önbelleğe alınıp başka bir ziyaretçiye sunulursa, kişisel veri sızıntısı yaşanır.
Bu yüzden kısıtlı sayfalarda önbellekleme açıkça kapatılmalıdır. Sayfa önbelleği kullanıyorsanız, oturum çerezi taşıyan isteklerin önbelleği tamamen atladığını doğrulayın.
Üçüncü madde ise ortak kullanılan bilgisayarlarda önemlidir. Çıkış yapan kullanıcının sayfası geri tuşuyla geri gelmemelidir.
Arama Motorlarından Gizlemek
Kısıtlı içerik dizine girmemeli:
| Önlem | Etkisi |
|---|---|
| Dizinleme engelleyici etiket | Sayfa dizine girmez |
| Tarama engeli | Bot sayfayı istemez |
| Erişim kontrolü | Bot zaten göremez |
Üçüncü satır zaten yeterlidir ve önceliklidir: gerçek erişim kontrolü varsa arama motoru botu da giriş yapamaz ve içeriği göremez.
Ancak dikkat: bazı sitelerde arama motorlarına içeriğin tamamı gösterilip kullanıcıdan giriş istenir. Bu, arama sonucundan gelen kullanıcı için kötü bir deneyimdir ve arama motorları tarafından da olumsuz değerlendirilebilir.
Doğru yaklaşım, içeriğin bir kısmını herkese açık göstermek ve devamı için giriş istemektir — bot da kullanıcı da aynı şeyi görür.
Oturum Yönetimi
Üyelik sisteminde oturum ayarları:
- Çerez bayrakları doğru ayarlansın.
- Boşta kalma süresi tanımlansın.
- Çıkışta sunucu tarafı temizlensin.
- Yetki değişiminde oturum yenilensin.
- Beni hatırla ayrı yönetilsin.
Beşinci madde özel dikkat gerektirir: "beni hatırla" özelliği uzun ömürlü bir belirteç oluşturur ve bu belirteç çalınırsa aylarca geçerli kalır.
Bu belirteçler ayrı saklanmalı, özetlenmeli ve hassas işlemlerde şifre yeniden sorulmalıdır. Uzun oturum kolaylık sağlar ama tam yetki vermemelidir.
Korumayı Test Etmek
Erişim kontrolü test edilmeden güvenilir sayılmaz:
- Çıkış yapıp korumalı adresi deneyin.
- Gizli pencerede açmayı deneyin.
- Dosya adresini doğrudan girin.
- Başka kullanıcının kayıt numarasını deneyin.
- Arama motorunda site içi arama yapın.
Dördüncü madde en değerli testtir ve genellikle bir açık ortaya çıkarır: kendi hesabınızla giriş yapıp adres satırındaki kimliği bir artırmak, sahiplik kontrolünün olup olmadığını anında gösterir.
Beşinci madde ise geçmişteki sızıntıları yakalar. Korumalı sayfalarınız arama sonuçlarında görünüyorsa, bir noktada herkese açık kalmışlar demektir.
Bu tür kontrolleri dizin yapılandırması ve uygulama kodu seviyesinde birlikte kurabildiğiniz Linux hosting çözümleri ortamında, iki katmanlı koruma standart bir kurulumdur.
Sonuç
Erişim kontrolünde en sık atlanan katman dosya seviyesidir: sayfayı korumak, o sayfanın gösterdiği PDF veya videoyu korumaz. Korumalı dosyaları web kökünün dışına alın ve yalnızca yetki kontrolü yapan bir betikle sunun. Yetki tarafında ise kimlik doğrulama ile sahiplik kontrolünü karıştırmayın — adres satırındaki kayıt numarasını değiştirerek başkasının verisine ulaşmak çok yaygın bir açıktır. Ve kısıtlı sayfalarda önbelleklemeyi mutlaka kapatın.
Sıkça Sorulan Sorular (SSS)
Sayfayı korudum, dosyalar da korunur mu?
Korunmaz. Dosyanın adresini bilen herkes doğrudan indirebilir — bir üye adresi paylaşırsa içerik herkese açılır. Korumalı dosyaları web kökünün dışına koyun ve yalnızca yetki kontrolü yapan bir betik üzerinden sunun.
Basit bir koruma için ne kullanabilirim?
Sunucu seviyesi şifre koruması. Dakikalar içinde kurulur ve uygulamanız hiç çalışmadan devreye girer — bir kod hatası bu korumayı delemez. Test ortamları ve dar bir gruba açık içerikler için idealdir.
Giriş kontrolü yeterli mi?
Değil. Kimlik doğrulama "kimsin" sorusunu yanıtlar, sahiplik kontrolü "bu kayıt senin mi" sorusunu. İkincisi olmadan, giriş yapmış bir kullanıcı adres satırındaki kayıt numarasını değiştirerek başkasının verisine ulaşabilir.
Kısıtlı sayfalarda önbellek riski var mı?
Ciddi bir risk var. Bir üyenin gördüğü sayfa önbelleğe alınıp başka bir ziyaretçiye sunulursa kişisel veri sızıntısı yaşanır. Kısıtlı sayfalarda önbelleklemeyi açıkça kapatın ve oturum çerezi taşıyan isteklerin sayfa önbelleğini atladığını doğrulayın.