Şimdi Ara

Mvc yetkisiz işleme karşı ölem

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
10
Cevap
1
Favori
1.447
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Not kaydedilen bir mvc projesi olduğunu varsayalım. Bir kullanıcın öğreyi denetle diyerek veya url değiştirererk kendine ait olmayıp görmemesi veya değiştirmemesi gereken şeylere karşı önlem almak istiyorum.

    Örn: Note/Edit/55 adresine gidildiğinde o notu oluşturan kullanıcı not kendine ait olmasa da görüp, silip, değiştirebiliyor.

    Önlem olarak if(Session.Currentuserid == note.userid) ise işleme devam et şeklinde kodlar akla geliyor. Ancak bu şekilde her action da böyle önlem almak gerekiyor. Bu tip şeylere karşı daha spesifik bir çözüm olup olmadığını merak ettim.



    < Bu mesaj bu kişi tarafından değiştirildi Hobar -- 10 Mayıs 2020; 2:59:34 >



  • Auth yok mu
    Yabanci Note/Edit/55 bu adrese nasıl giriyor

    Nodejste middleware gibi bir şey var , araya auth için koyulabiliyor sanırım
    Dotnet te de Böyle bir şey yapılabilir



    < Bu mesaj bu kişi tarafından değiştirildi alimmm78 -- 9 Mayıs 2020; 5:3:14 >
  • alimmm78 kullanıcısına yanıt
    Auth var o action ı sadece üyeler görebiliyor. Ama bu şekilde bir üye başka bir üyenin mesajına ait id yazdığında onu da görüyor.
  • SQL sorgunda

    SELECT * FROM Notlar Where id = DegiskenNotID

    yerine

    SELECT * FROM Notlar Where id = DegiskenNotID and kullaniciid = DegiskenKullaniciID

    şeklinde yazarsan ulaşamaz.
  • Rol tabanlı yapabilirsin.

    Önce adresileri db ye kayıt et.

    Sonra rolleri kayıt et

    sonra rollere tek tek erişim yetkisi ver.

    sonra kullanıcıları rollere bağla.

    Sonrada her controllere içindeki adreslere erişim için kontrol sistemi kur.
  • Delifisek.Tux kullanıcısına yanıt
    Rol de sorun yok. Admin in görmesi gereken sayfayı admin görüyor. User ın görmesi gereken sayfayı da User görüyor. Ama bir User başka User ın verisini görüyor.
  • Bir tane basecontroller yapip , sonra kontrol yapmak istedigin sayfalari yani controller lari bu basceontrollerden turet. Basecronteller icerisinde istedigin kontroli yapabilirsin. Boylece bu sayfadan tureyen butun sayfalarda bu islem gecerli olmus olur. Ayrica sessin kullanmaktansa claimleri bir arastirmani oneririm.
  • Hobar kullanıcısına yanıt
    Üstte yazılmış zaten SQL değiştirip, her satıra bir sahip id si koyacaksın. Başka türlü zor. hatta olmaz. Sen aynı tabloyu bir den fazla kullanıcıya paylaştıracaksan ve bunların ayrışmasını istiyorsan o tabloya veri sahibi bilgisini koyacaksın. Yada her kullanıcıya ayrı tablo ve veya ayrı database yaratman gerekiyor :)
  • Delifisek.Tux kullanıcısına yanıt
    Kafamdan ürettiğim çözüm oydu zaten. Bir mesajı çekerken if(o user == current user) diye. Daha bilinen oturmuş bie çözüm var mı diye merak ettim.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.