ViewState, EventValidation POSTBACK olayı hk.

Web tabanlı uygulama geliştirme araçları(PHP, ASP vb...) ile ilgili konuları buraya yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

ViewState, EventValidation POSTBACK olayı hk.

Mesaj gönderen mrmarman »

Merhaba..

- WEB tabanlı sorguları Delphi'den yapmak ve sonuçlarını almak konusunda oldukça deneyimim oldu.

- WEB olayına aşina olmakla birlikte, teknik detay konusunda sıkıntı yaşıyorum. ViewState ve EventValidation kavramını bilen varsa soracağım soru çerçevesinde kısaca değinirse sevinirim. :idea:

1. Cookies Kavramı : Her cookie için mutlaka bilgisayarımızda oturum açtığımız USER altındaki Cookies klasöründe text tabanlı bir dosya açılarak yazılıyor mu :?: Yoksa hafızada tek SESSION bazında geçici konumlanma durumu olabiliyor mu :?:

- SESSION bilgisini almak için bunu IdCookieManager'dan yararlanıyorum.

- Sorumun amacı; Cookie'leri engellemek için Internet Ayarlarında Güvenliği üst düzeye çıkardığım ve sitedeki ViewState ve EventValidation değerlerine blok koyduğum (HDD'den okuduğum statik değerleri post sırasında vererek) halde browse ettiğim sitedeki, bir yerlere sakladığı veriyi değiştirmediğimden sonuç alamamam üzerine.

- Acaba diyorum, RAM'de session açık olduğu sürece tutulan bir geçici veri saklama konumu mu var :?: İllaki var ama bu da mı Cookie'dir :?: Saklanabilir mi ? IdCookieManager benzeri bir yöntemle okunabilir mi :?:

2. POST edilen değerler kodlanıp ViewState ve EventValidation verisi oluşturuluyor.

- ViewState ve EventValidation'u görev olarak birbirinden ayıran nedir :?:
- Ortak noktaları nedir ?
- Birbirleriyle eş güdümlü buludurmaları gereken içerik veri var mıdır :?:

- İlgilenen herkese teşekkürler...
Resim
Resim ....Resim
Kullanıcı avatarı
MercilessTurk
Üye
Mesajlar: 94
Kayıt: 28 Eki 2005 10:14

Re: ViewState, EventValidation POSTBACK olayı hk.

Mesaj gönderen MercilessTurk »

mrmarman yazdı: 1. Cookies Kavramı : Her cookie için mutlaka bilgisayarımızda oturum açtığımız USER altındaki Cookies klasöründe text tabanlı bir dosya açılarak yazılıyor mu :?: Yoksa hafızada tek SESSION bazında geçici konumlanma durumu olabiliyor mu :?:

- SESSION bilgisini almak için bunu IdCookieManager'dan yararlanıyorum.

- Sorumun amacı; Cookie'leri engellemek için Internet Ayarlarında Güvenliği üst düzeye çıkardığım ve sitedeki ViewState ve EventValidation değerlerine blok koyduğum (HDD'den okuduğum statik değerleri post sırasında vererek) halde browse ettiğim sitedeki, bir yerlere sakladığı veriyi değiştirmediğimden sonuç alamamam üzerine.

- Acaba diyorum, RAM'de session açık olduğu sürece tutulan bir geçici veri saklama konumu mu var :?: İllaki var ama bu da mı Cookie'dir :?: Saklanabilir mi ? IdCookieManager benzeri bir yöntemle okunabilir mi :?:
Selam sadece ilk sorunuz hakkında bir iki şey söyleyebilirim. Session ile ilgili herhangi bir cookie kaydedilmiyor hdd ye. Cookie oluşturuluyor fakat kaydedilmiyor. Linux üzerinde firefox kullanıyorum. Firefox üzerindeki bir eklenti sayesinde girdiğim tüm sitelerdeki o anki cookie leri görebiliyorum. Mesala kendi hazırladığım ve cookie olarak sadece üyelik bilgilerini tuttuğum bir php portal sisteminde sadece üyelik bilgilerini değil ayrıca oluşturduğum session bilgilerinide firefox otamatik olarak cookie olarak gösteriyor ama hdd ye kaydetmiyor. Session cookie sinde de sadece PHPSESSID(Session id) değerini tutuyor. Session id tek başına bir anlam ifade etmiyor. Linux sistemlerde bu session id lere ait bilgiler /tmp klasöründe tutuyor ki buraya da ulaşmak servera ulaşma iznimiz olmasını gerektiriyor (diğer web programlama dillerinde ve işletim sistemlerinde nasıl bir yol izleniyor bilmiyorum ama buna benzer yollar izlenildiğini tahmin ediyorum).

Kısaca eğer sorunuzu yanlış anlamadıysam session bilgilerine ulaşma olanağınız yok.

Kolay gelsin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Teşekkürler.

- Session bilgisi detaylarına ulaşamayacağım tamam. Proxy vs. yazmanın dışında (proxy vs. derken gelen paketlerin okunmasından kasıt) şifreli de olsa blok halinde alabilmenin yolu var mıdır sizce ? (Indy bileşenleri, TWebBrowser vs.) Hatta aynı şekilde geriye blok halinde gönderebilsem sorunum hallocak.. :?

- Konu zaten localde geçiyor. Server'in locale gönderdiği bilgiler, SUBMIT esnasında tekrar geriye server'e alınarak kullanıyor olduğunu değerlendiriyorum.

- Bu kanıya nasıl vardım ?! :arrow: Browse edildiği sırada bilgi girişi yapılıp SUBMIT edildikten sonra sonuç alınıyor. :arrow: BACK yaptığımda SESSION'da veri varsa "bilgiler güncel değil, veri kaybın olabilir" türevi uyarısı verilir ya. Bu uyarı verilmiyor, sorunsuz eski veriler karşıma yeniden geliyor. :arrow: Ama hiçbişey yapmadan yeniden SUBMIT edersem bu ikinci seferde "doğru giriş yapılmadığı" uyarısı geliyor.

- Yeri gelmişken amaç; bu geri dönecek server için teyid manasındaki değerlerin kontrol altına alınarak farklı tarihlerde ve farklı sezonda ama aynı veriyle işlem yapabilmek. Bu veriyi çözmek zorunluluğum da yok. Sadece blok halinde geri sunmak kafi.

- Ek - Firefox'un hangi eklentisi acaba ? Sorsam..

Ref : https://addons.mozilla.org/en-US/firefo ... s&status=4

bunlardan en etkin olanı kullandığını varsayarak soruyorum..
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Firefox'u seviyorum. CookieSafe 2.0.6 kurdum. Yukarda bahsi geçen sorguyu içeren siteye Permenantly Block dediğimde kesinlikle her zaman yanlış veri girildiği cevabını alıyorum.
8)

- SessionID değişmediği hep sabit olduğu halde her gelen veriye göre değişik yorum yapmasından yola çıkarak görünmeyen veri sözkonusu.

- Son sorum ve diğer hususlarda bilginiz / bilgisi olan varsa memnun olurum..
Resim
Resim ....Resim
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Bildiğim kadarıyla (bu yazıları okumadan önce %100 emindim. cahil cesaretli olurmuş) Session'lara ulaşamazsınız. Çünkü onlar server tarafında tutulan değişkenlerdir. Session_id ise serverin o kullanıcıya ait tuttuğu değişkenlerin adresini gösteriyor sanırım. Normalde sessionid olmadan da hangi bilgi tutabilirsiniz. Hiç bir browser server'ın session tuttuğunu anlamaz.
Session'ların cookilerle de bir bağlantısı yoktur, tabi sessionid gibi bir değişkeni kaydetmezseniz.
session ların timeout süresi vardır. Bu süre dolduğunda iptal olurlar.

Sizin üzerinde uğraştığınız sistemde sanırım yapı şu şekilde: login olduğunuzda yada sayfayı açtığınızda bir session yaratılıyor. sonuç sayfası çalıştığındada bu session kapatılıyor. Geri düğmesine bastığınızda sayfa yeniden yüklenmediğinden session oluşmuyor. Ayrıca şuda olabilir, kullanıcının sorgulama yapıp yapmadığına dairde session kullanabilirler.

Session'lar serverda ip bazlı yada ip header bazlı oluşturuluyordur.

ViewState ve EventValidation olaylarını duymadım. Sanırım ASP.NET içinde geçiyordu. ASP.NET içindede session korumaları var.

Kolay gelsin.
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

http://odetocode.com/Blogs/scott/archiv ... /3153.aspx
http://odetocode.com/Blogs/scott/archiv ... /3145.aspx

viewstate sayfada bulunan nesnelerin son durumunu tutuyor. linktende anladığım kadarıyla eventvalidation olayların tetiklenmesinde istemcide yapılan olası tehlikeleri kontrol ediyor.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

arkadaşlar, teşekkürler. :)

- Bu konuya biraz daha çalışayım en iyisi. Sanırım gelen paketleri irdelemem gerekecek. :roll:

EK

- @mkysoft her kullanıcı için SessionID server'de tutulacak olursa , timeout süresine kadar inanılmaz bir RAM ihtiyacı olmaz mı ? Mesela sürekli ard arda sorgu yapılıdığını varsayalım. O zaman bu sorum daha gerçekçi olur...
Resim
Resim ....Resim
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

O zaman daha fazla RAM'i olan servera geçeceksiniz :D
Apache içinde her domain için max user ayarı vardır. Bu sayede session ların sınırı belirlenmiş olur.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Hocam yanlış anladınız.

- Ben client'im server olanların stratejisini araştırıyoruz. :lol:
Resim
Resim ....Resim
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Cookies
Cookie ler client tarafta text tabanlı dosyalar olarak temporary dizinde tutulurlar. Programcı kontrolünde belirli bir timeout süresi ile atılırlar.
Session ise server tarafında atılır ve her client için unique bir id dir. Ayrıca yine cookie lerde olduğu gibi programcı da birden çok session atabilir.
Session lar içinde değiştirilebilen bir timeout süredi vardır ama genelde süre dikkate alınmaz çünkü browser ın kapanışı zaten session ı öldürür.
ViewState ve EventValidation Asp.net in bir özelliğidir ve doğrudan Session la bir ilgisi yoktur. Session ların bir şekilde okunabildiğini hep duyuyorum ama bunun gerçek bir örneğini görmedim henüz. Zaten teorik olarak server ın bellek alanına erişmek pek mümkün gözükmüyor.
POST edilen değerler kodlanıp ViewState ve EventValidation verisi oluşturuluyor.
View state, sayfayı kendi üzerine defalarca post etmenize rağmen hiç bir işlem yapmadan sayfadaki controllerin değerlerini kaybetmemesidir. yani sayfa post olduktan sonraki yüklemede (onload da) view state e bakarak ilgili değerleri ilgili kontrollere yükler. View State durumu aktif yada pasif olarak değiştirilebilir.
EventValidation da aktif yada pasif yapılabilen bir form doğrulama mekanizmasıdır. Örneğin bir bir text box içindeki html tag ları post etmeye çalıştığınızda devreye girerek exception fırlatacaktır. Bildiğim kadarıyla View State ile doğrudan bir ilişkisi yok..
timeout süresine kadar inanılmaz bir RAM ihtiyacı olmaz mı ? Mesela sürekli ard arda sorgu yapılıdığını varsayalım. O zaman bu sorum daha gerçekçi olur...
Evet abi hatta bazı durumlarda koskoca bir dataset, bir datagrid yada bir image ı session da saklamak gerekebiliyor. IIS bunu arka tarafta bir cache mekanizması ile disk te saklıyor.
Hatta yavaşlıkla ilgili şunu söyleyebilirim, bazen farkında olmadan form üzerindeki kontrollerin oluşturduğu viewstate yükü session lardan daha fazla performans yakbına neden olabiliyor. (Bu arada yeri gelmişken sadece Runat Server olarak işaretlenmiş kontrollerin view state i tutulabilir. standart html kontrollerinin durumları tutulmaz.)
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Bilgi için herkese teşekkürler... Çok faydalı oldu. Bunları aklımda tutarak tekrar bir inceleme yapıcam.. :o
Resim
Resim ....Resim
Cevapla