folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder Web Oturum Sonlandırma - Fikir Ve Tavsiye - ASP.NET



Web Oturum Sonlandırma - Fikir Ve Tavsiye - ASP.NET

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    furkiak
    furkiak's avatar
    Kayıt Tarihi: 29/Nisan/2014
    Erkek

    merhabalar üstadlar bir şey yapmak istiyorum ama nasıl yapabileceğim konusunda bilgim yetersiz geliyor. sizlerden ricam bu konuda bana yol gösterebilir misiniz ?

     

    şimdi bir web sitesi düşünün. bu web sitesinde 4 adet sayfa var. 1,2,3,4 diye isimleri olsun. örnek olarak  a kullanıcısı 1. sayfaya girdi. girdiği anda o sayfa artık onun olacak içerisinde işlemleri yapabilecek. a kullanıcısı içerideyken başka kim girerse girsin bu sayfaya şuanda bu sayfa kullanımda uyarısı verecek. taki a kullanıcısı çıkış yap derse. yada ana yönetim sayfasındaki kişi 1. sayfadaki a kullanıcısı atana kadar. 2.3.4 sayfalardada aynı işlem olacak. ve bunlarda aynı şekilde ister kendi istekleri ile istersede yönetici tarafından sonlandıralabilecek. önemli nokta şu kullanıcı diye hitap ettiğim a kullanıcısı bu sayfaya girdiğinde şifre mail vb hiç bir şey girmiyor. sadece o sayfaya ilk girdiyse o sayfa artık onun oluyor. 

    böyle bir yapı için nasıl bir yol izlemeliyim. sizlerden bir fikir istiyorum.


    Android Mobil Uygulama - Web Sitesi - Masaüstü Yazılım yapılır. Vitaminsiz Palyaço
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Retro
    by_Tet
    by_Tet's avatar
    Kayıt Tarihi: 22/Mayıs/2012
    Erkek

    Aslında veritabanına ip veya uuid gibi bir id yazdırarak halledebilirsin ama kullanıcının çıktığını yakalaman problem olacaktır.

    Socket ile çalışırsın problemini tam olarak çözersin


    iyibu! yeniden..
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek
    by_Tet bunu yazdı

    Aslında veritabanına ip veya uuid gibi bir id yazdırarak halledebilirsin ama kullanıcının çıktığını yakalaman problem olacaktır.

    Socket ile çalışırsın problemini tam olarak çözersin

    id:pw authentication soz konusu degil, ben surekli socketi poollarsam ve kimsenin giremeyecegi bir sekilde isgal edersem ne olacak peki?

    benim azami bir guesting sinirlamam olmasi mantikli olabilir belki sonraki 30 dakika icinde o ip ile tekrar alamam oturumu. baska da bir sey gelmedi aklima.


    0x0480 takilin madem ﷽﷽﷽
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hannibal_King
    Hannibal_King's avatar
    Kayıt Tarihi: 22/Ağustos/2010
    Erkek

    Uygulamanda 1 adet static ConcurrentDictionary olacak. 

    https://docs.microsoft.com/tr-tr/dotnet/api/system.collections.concurrent.concurrentdictionary-2?view=net-5.0

    İnternet dünyasında cookie denen bir kavram var. Cookie nin olma sebebi senin siteni ziyaret eden kullanıcıları ayrıştırmak, işaretlemek, damgalamak. Bunları tanımak istiyorsun. O nedenle cookie ler ile kullanıcılar işaretleniyor.

    Önce siteni ziyaret eden kişilere bir kimlik numarası ata. Bunu random sayılar kullanarak yap. Mesela hepimiz anasayfaya girdik. Site baksın cookie["kimlik numarası"] eğer boşsa bu defa git 50 karakter uzunluğunda bir rastgele sayı üret ve sonunada yıl + ay +gün+ saat+ dakika+ saniye ekle.

    Böylece siteyi ziyaret eden her kullanıcının bir kimlik bilgisi oluşmuş oldu.

    Diyelimki benim kimlik numarası ADF548S48-2021-04-10-09-36-54 olsun. 3 numaralı sayfaya giriş yapmak isteyeyim. ConcurrentDictionary den bakacaksın. 3 numaralı sayfa boş mu. Yani sözlükte key değeri 3 olan bir eleman var mı? Yoksa eğer, hemen sözlüğe sozluk.Add(3, new Info{ kimlik = "ADF548S48-2021-04-10-09-36-54", ExpirationDate = DateTime.Now.AddMinutes(10) }); Diyerek yeni kayıt gireceksin. Sözlükteki keyler sayfalarının numaraları, sözlükteki değerler ise senin kullanıcının bilgilerini tutan nesneler. Bu nesneler içinde kullanıcının kimlik bilgisi ve sayfayı son kullanma süresi olacak.

    Başka bir kişi 3 numaralı sayfaya erişirse eğer, bu sefer kontrolünü yapacaksın. Sözlükten key değeri 3 olan elemanı getireceksin, bakacaksın erişmek isteyen kişi ile sozlukteki elemanın içindeki nesnenin kimlik bilgisi aynı mı? Ona göre sayfaya alacaksın veya almayacaksın. Eğer bir kişi erişmek istediğinde o sayfa dolu ise son kullanma tarihine bakacaksın. Geçmişse, sozlukten var olan kaydı silip, yeni kayıt ekleyeceksin.

    Özetle 1 adet static sözlük ve cookie kullanarak algoritma kuracaksın. Bu kadar.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek
    Hannibal_King bunu yazdı

    Uygulamanda 1 adet static ConcurrentDictionary olacak. 

    https://docs.microsoft.com/tr-tr/dotnet/api/system.collections.concurrent.concurrentdictionary-2?view=net-5.0

    İnternet dünyasında cookie denen bir kavram var. Cookie nin olma sebebi senin siteni ziyaret eden kullanıcıları ayrıştırmak, işaretlemek, damgalamak. Bunları tanımak istiyorsun. O nedenle cookie ler ile kullanıcılar işaretleniyor.

    Önce siteni ziyaret eden kişilere bir kimlik numarası ata. Bunu random sayılar kullanarak yap. Mesela hepimiz anasayfaya girdik. Site baksın cookie["kimlik numarası"] eğer boşsa bu defa git 50 karakter uzunluğunda bir rastgele sayı üret ve sonunada yıl + ay +gün+ saat+ dakika+ saniye ekle.

    Böylece siteyi ziyaret eden her kullanıcının bir kimlik bilgisi oluşmuş oldu.

    Diyelimki benim kimlik numarası ADF548S48-2021-04-10-09-36-54 olsun. 3 numaralı sayfaya giriş yapmak isteyeyim. ConcurrentDictionary den bakacaksın. 3 numaralı sayfa boş mu. Yani sözlükte key değeri 3 olan bir eleman var mı? Yoksa eğer, hemen sözlüğe sozluk.Add(3, new Info{ kimlik = "ADF548S48-2021-04-10-09-36-54", ExpirationDate = DateTime.Now.AddMinutes(10) }); Diyerek yeni kayıt gireceksin. Sözlükteki keyler sayfalarının numaraları, sözlükteki değerler ise senin kullanıcının bilgilerini tutan nesneler. Bu nesneler içinde kullanıcının kimlik bilgisi ve sayfayı son kullanma süresi olacak.

    Başka bir kişi 3 numaralı sayfaya erişirse eğer, bu sefer kontrolünü yapacaksın. Sözlükten key değeri 3 olan elemanı getireceksin, bakacaksın erişmek isteyen kişi ile sozlukteki elemanın içindeki nesnenin kimlik bilgisi aynı mı? Ona göre sayfaya alacaksın veya almayacaksın. Eğer bir kişi erişmek istediğinde o sayfa dolu ise son kullanma tarihine bakacaksın. Geçmişse, sozlukten var olan kaydı silip, yeni kayıt ekleyeceksin.

    Özetle 1 adet static sözlük ve cookie kullanarak algoritma kuracaksın. Bu kadar.

    onar dakikalık kitlemeler yerine realtime baglanti istiyorsun diyelim, aspnet'in modülleri muhakkak vardır websocket'e yönelik. Benzer mantığı izleyeceksin. Çerezler yerine socket connection idlerini kullanabilir ve disconnect olduğunda boşa çıkartabilirsin. Yine azami bir bağlantı süresi olur, örneğin 1 saat, clientta popup çıkar 1 dakikalık, "bağlantınızı devam ettirmek istiyor musunuz?" diye. 1 dakika içinde yanıt gelmezse yine boşa çıkartırsın o sayfayı.

    Gibi gibi...

    Ellerine sağlık yamyam kral.


    0x0480 takilin madem ﷽﷽﷽
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hannibal_King
    Hannibal_King's avatar
    Kayıt Tarihi: 22/Ağustos/2010
    Erkek
    end bunu yazdı
    Hannibal_King bunu yazdı

    Uygulamanda 1 adet static ConcurrentDictionary olacak. 

    https://docs.microsoft.com/tr-tr/dotnet/api/system.collections.concurrent.concurrentdictionary-2?view=net-5.0

    İnternet dünyasında cookie denen bir kavram var. Cookie nin olma sebebi senin siteni ziyaret eden kullanıcıları ayrıştırmak, işaretlemek, damgalamak. Bunları tanımak istiyorsun. O nedenle cookie ler ile kullanıcılar işaretleniyor.

    Önce siteni ziyaret eden kişilere bir kimlik numarası ata. Bunu random sayılar kullanarak yap. Mesela hepimiz anasayfaya girdik. Site baksın cookie["kimlik numarası"] eğer boşsa bu defa git 50 karakter uzunluğunda bir rastgele sayı üret ve sonunada yıl + ay +gün+ saat+ dakika+ saniye ekle.

    Böylece siteyi ziyaret eden her kullanıcının bir kimlik bilgisi oluşmuş oldu.

    Diyelimki benim kimlik numarası ADF548S48-2021-04-10-09-36-54 olsun. 3 numaralı sayfaya giriş yapmak isteyeyim. ConcurrentDictionary den bakacaksın. 3 numaralı sayfa boş mu. Yani sözlükte key değeri 3 olan bir eleman var mı? Yoksa eğer, hemen sözlüğe sozluk.Add(3, new Info{ kimlik = "ADF548S48-2021-04-10-09-36-54", ExpirationDate = DateTime.Now.AddMinutes(10) }); Diyerek yeni kayıt gireceksin. Sözlükteki keyler sayfalarının numaraları, sözlükteki değerler ise senin kullanıcının bilgilerini tutan nesneler. Bu nesneler içinde kullanıcının kimlik bilgisi ve sayfayı son kullanma süresi olacak.

    Başka bir kişi 3 numaralı sayfaya erişirse eğer, bu sefer kontrolünü yapacaksın. Sözlükten key değeri 3 olan elemanı getireceksin, bakacaksın erişmek isteyen kişi ile sozlukteki elemanın içindeki nesnenin kimlik bilgisi aynı mı? Ona göre sayfaya alacaksın veya almayacaksın. Eğer bir kişi erişmek istediğinde o sayfa dolu ise son kullanma tarihine bakacaksın. Geçmişse, sozlukten var olan kaydı silip, yeni kayıt ekleyeceksin.

    Özetle 1 adet static sözlük ve cookie kullanarak algoritma kuracaksın. Bu kadar.

    onar dakikalık kitlemeler yerine realtime baglanti istiyorsun diyelim, aspnet'in modülleri muhakkak vardır websocket'e yönelik. Benzer mantığı izleyeceksin. Çerezler yerine socket connection idlerini kullanabilir ve disconnect olduğunda boşa çıkartabilirsin. Yine azami bir bağlantı süresi olur, örneğin 1 saat, clientta popup çıkar 1 dakikalık, "bağlantınızı devam ettirmek istiyor musunuz?" diye. 1 dakika içinde yanıt gelmezse yine boşa çıkartırsın o sayfayı.

    Gibi gibi...

    Ellerine sağlık yamyam kral.

    Blade filminden aklıma gelmisti ondan koymuştum nicki :)) Hannibal Lecter dan gelme değil :)))

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cukurova
    cukurova's avatar
    Kayıt Tarihi: 21/Aralık/2003
    Erkek

    Uygulaman oop mantığına ters. mantıklı değil. Arkadaşların dediğide haklı,  auth. olmadığı sürece sürekli saldırı altında meşgül olabilir.

    Yinede cevap olarak; websocket'in hazır kütüphanesi SignalR ile real-time yaparsın. İnternette çokca örneğini bulursun.

     

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Retro
    by_Tet
    by_Tet's avatar
    Kayıt Tarihi: 22/Mayıs/2012
    Erkek
    end bunu yazdı
    by_Tet bunu yazdı

    Aslında veritabanına ip veya uuid gibi bir id yazdırarak halledebilirsin ama kullanıcının çıktığını yakalaman problem olacaktır.

    Socket ile çalışırsın problemini tam olarak çözersin

    id:pw authentication soz konusu degil, ben surekli socketi poollarsam ve kimsenin giremeyecegi bir sekilde isgal edersem ne olacak peki?

    benim azami bir guesting sinirlamam olmasi mantikli olabilir belki sonraki 30 dakika icinde o ip ile tekrar alamam oturumu. baska da bir sey gelmedi aklima.

    E zaten böyle bir saldırı olmayacak gibi bir durum söz konusu değil ki?

    İstenilen şey sayfaya yalnızca 1 kişi girebilmesi. Bu kişinin gerçek kişi olup olmaması tamamen ip/proxy kontrolüne bağlı, id:pw olunca da aynı şekilde üyelik oluşturulabilir.

    Ancak mesele bu değil, sen socketi aynı bağlantı üzerinden poollayacaksın, bir başka sayfaya girdiğinde eski sayfa boşalacak yani aynı anda enfazla 1 sayfaya girebilmiş olacaksın.

    Dersen ki sürekli farklı socketler ile poollarım, her durumdaki gibi ip adresi kontrol edilir. 

    Dersen ki adamın ip adresi sürekli değişiyor/aynı ip üzerinden birden fazla kişi girebilmeli; bu ve benzeri sorunların dibi yok. Ama bunlar sorun teşkil ediyor diye yapılamaz bir şey de değil. Socket her türlü sorunu çözüyor. Birden fazla girişlerde çapça koyarsın, socket üzerinden callback hashlersin iş biter


    iyibu! yeniden..
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Roark
    Roark's avatar
    Kayıt Tarihi: 12/Ağustos/2011
    Erkek

    Valla ben aynısını php ve session ile yazmıştım. session true dönüyorsa, page status database tarafında 1 oluyor bu 1 true anlamında tabii, page status 1 olduğu sürece sayfaya başka kişi giriş yapamıyor, ana sayfaya yönleniyor. burada sorun şuydu sayfaya ilk giren kalabiliyordu eğer sayfa da refresh yaparsa onuda atıyordu 

     

    db kullanılmayacaksa Hannibal üstadın dediği static değişken ve kavramlar da iş görür eminim 

     

Toplam Hit: 1776 Toplam Mesaj: 10
web