v2.5.2
Giriş yap

no redirect açığı nasıl kapatılır ?

Anonim
162 defa görüntülendi

no redirect açığı nasıl kapatılır ?

ebykdrms
86 gün önce

Bir kullanıcının bulunmaması gereken bir sayfada bulunması ve "no redirect" ile başka sayfaya yönlendirilmekten kurtulması...
Eğer kullanıcıyı başka sayfaya yönlendiremiyorsak, en azından bu sayfanın içeriğini görmesini engelleyebiliriz.

Mesela kullanıcı login olduktan sonra /admin/dashboard url'sine yönlendiriliyor olsun.
Ama kullanıcı login ekranını geçip direkt url üzerinden /admin/dashboard diyerek bu ekrana girmiş olsun.
Biz bu sayfada kullanıcının yetkisi olup olmadığını kontrol ediyoruz ve eğer yetkisi yoksa /login ekranına redirect ediyoruz.
Ama kullanıcının tarayıcısında bir eklenti var ve redirect işlemlerini engelliyor.

  • Haliyle /login ekranına yönlendirilemiyor.
  • Haliyle /admin/dashboard ekranında kalıyor.
  • Haliyle /admin/dashboard ekranının içeriğini de görebiliyor veya en azından session'ı/token'ı olmadığından oluşan hata mesajlarını görebiliyor.

Bu durumda redirect komutunu verdiğimiz yerde kodların çalışmasını da durdurmak için bir komut kullanmalıyız.

Bahsettiğimiz dil php ise:

if(!$hasAccess) {
    // Kullanıcının yetkisinin olmadığını anlamışız ve login ekranına yönlendiriyoruz.
    header("Location:login");
    
    // Eğer bir şekilde yönlendirme komutu engellenirse bile exit komutu sayesinde sayfa içeriğinin görünmesini engelliyoruz.
    exit("Bu sayfayı görüntülemek için oturum açmanız gerekiyor. Lütfen giriş ekranına gidiniz...");
}
// Bu if bloğundan sorunsuzca geçebilirse sayfa içeriğini gösteriyoruz.
// Sayfanın içerikleri...

Tek satırlık basit bir çözüm ama yazılımcılar bunu unutabiliyorlar...