İçeriğe atla
0 XP 0
0/5

Puan ders bitince hesaba yazılır. Bu dersi tamamlayınca +50 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.

7 dk · 50 XP · 5 etkinlik

IDOR ve bozuk erişim denetimi

Bir fatura sayfası açtın ve adres çubuğunda kendi fatura numaran duruyor. Numarayı bir azaltırsan ne olur? Uygulama oturumunu tanır, ama o kaydın sana ait olup olmadığını sorgulamayabilir.

Bu ayrım işin özüdür. Kimlik doğrulama sorusu şudur: sen kimsin? Yetkilendirme sorusu ise şudur: bu kayda erişmeye hakkın var mı? İkincisi atlandığında oturum açan herkes herkesin verisini okur.

# Zafiyetli: yalnız kimlik sorulur
kayit = Fatura.query.get(fid)

# Sağlam: sahiplik sorguya girer
kayit = Fatura.query.filter_by(id=fid, musteri_id=current_user.id).first_or_404()
Denetim ayrı bir if bloğu değil, sorgunun kendisi olmalıdır.

İki sürüm arasındaki fark tek bir koşulda görünür. Zafiyetli sürüm kaydı yalnız kimliğe göre çeker; oturum açan kullanıcının o kayda sahip olup olmadığını hiç sormaz. Sağlam sürümde ise sorgu iki koşulla çalışır: kimlik eşleşmeli ve kayıt isteği yapan müşteriye ait olmalı. Sahiplik denetimi ayrı bir if satırı değil, sorgunun kendi filtresidir; bu yüzden kod incelemesinde de kolayca gözden kaçmaz, tersine hemen görülür. Aşağıdaki uçta bu ikinci koşulun sorguya hiç girmediğini göreceksin.