AuthN va AuthZ
Autentifikatsiya kim ekaningizni, avtorizatsiya nimaga huquqingiz borligini aniqlaydi. Login qilgan o‘quvchi faqat o‘z progress va konspektiga kirishi kerak. Mijoz yuborgan obyekt ID’ni almashtirish bilan boshqa yozuvga kirish IDOR holatiga olib kelishi mumkin.
Obyektni egasi bilan tanlang
Note.objects.get(id=note_id, user=request.user) kabi server-side filtr foydalaning. Yashirin tugma, tasodifiy UUID yoki frontend tekshiruvi yakka himoya emas. Administrator vakolatini alohida, aniq qoida bilan tekshiring.
Ruxsat regressiyasi
Ikki sintetik foydalanuvchi yarating: A o‘z yozuvini o‘qiydi, B yozuvini o‘qiy olmaydi; anonim kirish taqiqlanadi. O‘qish, yozish, eksport va delete yo‘llarining barchasi tekshirilsin. Misol faqat xotiradagi obyektlar ustida ishlaydi.
Python’da ko‘rib chiqamiz
current_user = 7
notes = [{"id": 1, "user": 7}, {"id": 2, "user": 9}, {"id": 3, "user": 7}]
visible = [note for note in notes if note["user"] == current_user]
print(len(visible))Misolni
Mustaqil mashq
Ikki user va uchta obyekt bilan read/write ruxsat matritsasini yozing. Har bir endpoint obyektni user bilan filtrlashini tekshiradigan test loyihalang.