Ders 9 - Role Based Access Control > Stage 4
Access Control Flaws ünitesinin LAB: Role Based Access Control(Role Dayalı Erişim Kontrolü) dersinin dördüncü alt başlığı olan Stage 4: Add Data Layer Access Control dersinde Stage 3'deki güvenlik açığının kapatılmasından ve bunun üzerine yetki ihlali yapma denemelerinin boşa çıkışından bahsedilecektir.

Dersin Hedefi

ViewProfile işlevi için yetkisiz erişimi engellemek adına bir düzeltme uygulayın. Düzeltme uygulayabilmek için WebGoat kaynak kodunu değiştirmek zorunda kalacaksınız. Bunu yaptınız mı hemen ardından stage 3'deki yetkisiz erişim teşebbüsünü tekrarlayınız ve ViewProfile butonunun olması gerektiği gibi sadece personelin yetki sınırları dahilinde çalıştığını gözlemleyiniz.

Açıklamalar

Bu bölüm WebGoat'un geliştirici versiyonunu kullananlar için işlevseldir. Standard versiyonunu kullanan bizler için işlevsel değildir.

Dersin Çözümü

Bu dersi WebGoat'un standard versiyonunu kullanan bizler tamamlayamayacağız. Fakat yine de çözümden bahsedilecektir. Hatırlarsanız Stage 3'de bir personel yetkisi olmadığı halde başka personelin profilini kendi kontrol panelinden görüntülebiliyordu. Yani kontrol panelindeki personel listesinde isim eksiltip arttırma ile erişim kontrolü sağlanmaktaydı. Bu sorunlu yapıdan dolayı kaynaklanan Stage 3'deki yetki ihlallerinin önüne geçebilmek için erişim kontrolünün sunucu tarafına taşınması gerekir. Şimdi çözüme geçelim. Bulunmakta olduğunuz dersin kaynak kodundaki

//***************CODE HERE*************************


//*************************************************


kısmına aşağıdaki kod bloğunu yerleştiriniz:

//***************CODE HERE*************************
if(!isAuthorized(s, getUserId(s), requestedActionName)){
  throw new UnauthorizedException();
}
if(!action.isAuthorizedForEmployee(s, getUserId(s), s.getParser().getIntParameter(RoleBasedAccessControl.EMPLOYEE_ID, 0))){
  throw new UnauthorizedException();
}													
//*************************************************


isAuthorized() methodu ile işçi grubundaki personeller yöneticilerin kullanabildikleri Delete gibi işlevleri gerçekleştirebilmekten alıkonulmuş olurlar. action.isAuthorizedForEmployee() methodu ile de işçi grubundaki personelin halihazırda var olan ve kullanabildikleri ViewProfile gibi işlevlerin kötü yönde kullanımı engellenir. Buna gündelik hayattan bir örnek vermek gerekirse mesela farklı farklı maaş alan bir şirketteki personellerin şirket politikası gereği aldıkları maaş miktarını birbirlerine söylemiyorlarken birisi kendi kontrol panelinden ViewProfile gibi bir işlevi kullanarak iş arkadaşının maaş miktarını öğrenebilir ve şirket içerisinde huzursuzluk ve fitne çıkarabilir. Bu tip durumlara sebebiyet vermemek için güvenlik istemci tarafında html nesnesi eksiltip arttırarak sağlanmamalı - zaten sağlanamaz. Bunun yerine sunucu tarafında kaynak kod üzerinde kontroller ile güvenlik sağlanmalıdır.
Bu yazı 10.05.2015 tarihinde, saat 15:17:50'de yazılmıştır. 23.09.2015 tarihi ve 10:36:53 saatinde ise güncellenmiştir.
Yazar : Hasan Fatih ŞİMŞEK Görüntülenme Sayısı : 807
Yorumlar
Henüz yorum girilmemiştir.
Yorum Ekle
*
* (E-posta adresiniz yayınlanmayacaktır.)
*
*

#Arşiv


#Giriş

ID :
Şifre :