ASP.Net-Cookie(Çerez) Tekniği
ASP.Net'çi web yazılımcılara yeniden selamlar olsun :)
ASP.Net ile veri taşıma yöntemlerinden daha önce Session ve QueryString konularını öğrenmiş ve bu konuda son öğreneceğimiz teknik olan cookie (çerez) nedir,nasıl yapılır gibi sorularımıza cevap bulacağız.
Cookie (Çerez) Nedir?
Öncelikle cookie'nin ne olduğunu öğrenelim; çerezleme tekniği uzun yıllardan beri web sitelerinin birçoğunda kullanılan tarayıcının önbellek (cache) planında tutulan basit metin dosyalarıdır.Bu metin dosyaları cookie tekniğini kullanan web sitesi ve tarayıcı ayarlarından engellenmediği sürece bilgisayar kullanıcısının siteyi ziyaret etmesiyle birlikte bilgisayarımıza içeriğinde web sitesi tarafından belirlenen verileri tutan metin dosyalarıdır.
Cookie tekniği düz metin dosyaları olduğu için son yıllarda farklı web sitelerinin ister iyi ister kötü niyetle olursa olsun bu dosyaların içerisindeki verileri site ziyaretçisinin izni olmadan okuyabiliyor (ya da diğer deyimle çalabiliyor).Dolayısıyla web yazılımcıları artık bu tarz hacking (bilgisayar korsanlığı-veri hırsızlığı) konusunu gözönünde bulundurmak zorunda ve önlemler alması gerekmektedir.
Örneğin çerezleme tekniği kullanan bir site asla ama asla kullanıcının kredi kartı bilgileri,adres ve iletişim bilgilerini tutmamalıdır.Hatta kullanıcıdan "beni hatırla-remember me" onayı almadan oturum açma (login) bilgilerini çerez kısmında tutmamalıdır,aksi halde ortaya çıkabilecek hukuki anlaşmazlıklardan tazminat dahi ödemek durumunda kalınabilir.
Cookie ile ilgili buraya kadar dikkat edilmesi gerekenleri öğrendik,şimdi ise ASP.Net ile nasıl cookie oluşturulur öğrenelim...
ASP.Net cookie tekniğini kullanabilmek için C# kod kısmında;
HttpCookie cookie=new HttpCookie("cerezAdi");
ile HttpCookie sınıfından instance alır ve
cookie.Values.Add("degisken","deger");
kod satırı ile çerezimizde tutmak istediğimiz değişken ve değerleri ekleriz.Değerler tamamen string tipte olması gerektiği gibi sonsuz sayıda değişken tutamıyoruz,bunun sebebi birçok web tarayıcısının (browser) çerez dosyası boyutunu 4 KB ile sınırlamasından kaynaklanmaktadır.Bu boyut küçük gibi görünse de bir web yazılımcısı olarak bi dünya veri sığdırabiliriz :)
Oluşturduğumuz çereze değişken ve değer atadıktan sonra çerez geçerlilik süresi ya da çerez zaman aşımı (cookie
expiration) kavramını tanıyalım: çerez geçerlilik süresi bir bilgisayar kullanıcısının bir web sitesini tekrar ziyaret edene kadar arada geçen boş zamanı temsil eder ve kullanıcı belirlenen süre sonunda siteyi tekrar ziyaret etmezse çerez dosyası tarayıcı tarafından bilgisayardan silinir.
Çerez geçerlilik süresi veri güvenliği nedeniyle kısa süreli olmalı ancak kullanıcının siteyi her ziyaret etmesi anında yeniden bilgileri girdirecek kadar da can sıkıcı olmaması gerekir,dolayısıyla web yazılımcısı sitenin yapısı ve ziyaret sürecine göre optimal bir süre tanımalıdır.
ASP.Net cookie zaman aşımını ise;
cookie.Expires=Datetime.Now.Add();
metotlarından birini kullanırız,örneğin çerez dosyası 5 saat tutulacaksa;
cookie.Expires=Datetime.Now.AddHours(5);
5 gün tutulacaksa;
cookie.Expires=Datetime.Now.AddDays(5);
gibi gelecek süre zarfında bir değer vermeli ve bunu da Datetime sınıfı üzerinden gerçekleştirmeliyiz.
Çerez içerisinde tutulacak değişken-değerleri ve zaman aşımı bilgisini verdikten sonra çerezi web tarayıcısı aracılığıyla kullanıcının bilgisayarına;
Response.Cookies.Add(cookie);
ile yüklüyoruz.
Buraya kadar teorik bilgilerden bahsettik ve şimdi ise bir ASP.Net uygulaması ile cookie örneği gerçekleştirelim.
Öncelikle yeni bir proje oluşturuyor ve web formumuzu tasarlıyoruz:
ve butonumuza çift tıklayarak click eventine geçiyoruz,öncelikle kullanıcı oturum açma esnasında sayfanın postback sorununa yol açmaması için Page_Load metodu içerisinde önlemimizi alıyoruz:
Ardından butona tıklandığında kullanıcı bilgilerinin boş geçilmesini önlüyoruz:
Sırada ise çerezimizi oluşturacağız ancak çerez oluşturma işlemi için kullanıcıdan onay almalıyız,bunun için
eğer kullanıcı "beni hatırla" checkbox'ını işaretlemiş mi diye kontrol ediyoruz:
Kullanıcıdan onay aldığımıza göre çerezimizi oluşturabiliriz:
Çerez bilgilerini yazdıktan sonra projemizi çalıştırıyor ve ilk ASP.Net çerezimizi oluşturuyoruz:
Madem çerez oluşturulduysa bilgisayarımızda nereye yüklendi? Bu sorunun cevabını Google Chrome kullandığımız
için bilgisayarımızda
C:\Users\Kullanıcı\AppData\Local\Google\Chrome\User Data\Default
yolunu izliyoruz ve Cookies-journal dosyasını açıyoruz.Açtığımız dosya net okuyabileceğimiz kolay bir içerik değil ancak CTRL-F ile "sifre" isimli değişkenimizi yazdığımızda yazdığımız çerez bilgilerine ulaşabiliyoruz:
Elbette bu makalemde cookie ile veri hırsızlığı yapmak değil sadece iyi niyetle çerez tekniğini detaylarını öğreniyoruz,o yüzden kötü niyetle kullanırsanız üzülürüm :(
ASP.Net ile çerezimizi oluşturduğumuza göre şimdi de daha önce oluşturduğumuz çerezimizi okumaya geldik,bunun
için oluşturduğumuz çerezin adını (çerez değişkeni değil!)
Request.Cookies["cerezAdi"]["degisken"];
kod satırı ile yakalıyoruz.Şimdi ise aynı sayfamızın Page_Load metodu içerisinde oluşturduğumuz çerezi okuyup
kullanıcı adı ve şifre textboxlarını dolduracağız.
Öncelikle web sayfası açıldığında daha önceden çerez olmama ihtimaline karşın ya da diğer deyimle site ilk kez
ziyaret ediliyor olma olasığına karşı sitemize ait zaman aşımına uğramamış çerez olup olmadığını denetleyelim:
Zamanaşımına uğramamış dememizin sebebi az önce bahsettiğim gibi çerezler bilgisayarımızda belli bir süreliğine
tutulur ve ardından kalıcı olarak silinirler.
Şimdi oluşturduğumuz çerez bilgilerini yakalayıp textboxlarımızı dolduruyoruz:
Şimdi ise tekrar projemizi çalıştırıyoruz ancak bu defa kullanıcı adı ve şifre bilgilerini girmiyoruz çünkü oluşturduğumuz çerezden otomatik gelecekler:
ve da da!!! bilgilerimiz artık otomatik geliyor :)
Böylece ASP.Net cookie tekniği sayesinde bilgilerimizi arkaplanda tutmayı da öğrendik,çerezleme kısmında kafanızın
karıştığını tahmin ettiğim nokta çerezin adı kısmıdır o yüzden çerezin adını şu şekilde alt alta yazıyorum:
Çerez ile veri taşıma tekniğini öğrendiğimize göre artık makalemizin sonuna gelmiş bulunmaktayız,bir sonraki makalemizde görüşmek üzere hoşçakalın :)
Projeyi İndir
ASP.Net ile veri taşıma yöntemlerinden daha önce Session ve QueryString konularını öğrenmiş ve bu konuda son öğreneceğimiz teknik olan cookie (çerez) nedir,nasıl yapılır gibi sorularımıza cevap bulacağız.
Cookie (Çerez) Nedir?
Öncelikle cookie'nin ne olduğunu öğrenelim; çerezleme tekniği uzun yıllardan beri web sitelerinin birçoğunda kullanılan tarayıcının önbellek (cache) planında tutulan basit metin dosyalarıdır.Bu metin dosyaları cookie tekniğini kullanan web sitesi ve tarayıcı ayarlarından engellenmediği sürece bilgisayar kullanıcısının siteyi ziyaret etmesiyle birlikte bilgisayarımıza içeriğinde web sitesi tarafından belirlenen verileri tutan metin dosyalarıdır.
Cookie tekniği düz metin dosyaları olduğu için son yıllarda farklı web sitelerinin ister iyi ister kötü niyetle olursa olsun bu dosyaların içerisindeki verileri site ziyaretçisinin izni olmadan okuyabiliyor (ya da diğer deyimle çalabiliyor).Dolayısıyla web yazılımcıları artık bu tarz hacking (bilgisayar korsanlığı-veri hırsızlığı) konusunu gözönünde bulundurmak zorunda ve önlemler alması gerekmektedir.
Örneğin çerezleme tekniği kullanan bir site asla ama asla kullanıcının kredi kartı bilgileri,adres ve iletişim bilgilerini tutmamalıdır.Hatta kullanıcıdan "beni hatırla-remember me" onayı almadan oturum açma (login) bilgilerini çerez kısmında tutmamalıdır,aksi halde ortaya çıkabilecek hukuki anlaşmazlıklardan tazminat dahi ödemek durumunda kalınabilir.
Cookie ile ilgili buraya kadar dikkat edilmesi gerekenleri öğrendik,şimdi ise ASP.Net ile nasıl cookie oluşturulur öğrenelim...
ASP.Net cookie tekniğini kullanabilmek için C# kod kısmında;
HttpCookie cookie=new HttpCookie("cerezAdi");
ile HttpCookie sınıfından instance alır ve
cookie.Values.Add("degisken","deger");
kod satırı ile çerezimizde tutmak istediğimiz değişken ve değerleri ekleriz.Değerler tamamen string tipte olması gerektiği gibi sonsuz sayıda değişken tutamıyoruz,bunun sebebi birçok web tarayıcısının (browser) çerez dosyası boyutunu 4 KB ile sınırlamasından kaynaklanmaktadır.Bu boyut küçük gibi görünse de bir web yazılımcısı olarak bi dünya veri sığdırabiliriz :)
Oluşturduğumuz çereze değişken ve değer atadıktan sonra çerez geçerlilik süresi ya da çerez zaman aşımı (cookie
expiration) kavramını tanıyalım: çerez geçerlilik süresi bir bilgisayar kullanıcısının bir web sitesini tekrar ziyaret edene kadar arada geçen boş zamanı temsil eder ve kullanıcı belirlenen süre sonunda siteyi tekrar ziyaret etmezse çerez dosyası tarayıcı tarafından bilgisayardan silinir.
Çerez geçerlilik süresi veri güvenliği nedeniyle kısa süreli olmalı ancak kullanıcının siteyi her ziyaret etmesi anında yeniden bilgileri girdirecek kadar da can sıkıcı olmaması gerekir,dolayısıyla web yazılımcısı sitenin yapısı ve ziyaret sürecine göre optimal bir süre tanımalıdır.
ASP.Net cookie zaman aşımını ise;
cookie.Expires=Datetime.Now.Add();
metotlarından birini kullanırız,örneğin çerez dosyası 5 saat tutulacaksa;
cookie.Expires=Datetime.Now.AddHours(5);
5 gün tutulacaksa;
cookie.Expires=Datetime.Now.AddDays(5);
gibi gelecek süre zarfında bir değer vermeli ve bunu da Datetime sınıfı üzerinden gerçekleştirmeliyiz.
Çerez içerisinde tutulacak değişken-değerleri ve zaman aşımı bilgisini verdikten sonra çerezi web tarayıcısı aracılığıyla kullanıcının bilgisayarına;
Response.Cookies.Add(cookie);
ile yüklüyoruz.
Buraya kadar teorik bilgilerden bahsettik ve şimdi ise bir ASP.Net uygulaması ile cookie örneği gerçekleştirelim.
Öncelikle yeni bir proje oluşturuyor ve web formumuzu tasarlıyoruz:
ve butonumuza çift tıklayarak click eventine geçiyoruz,öncelikle kullanıcı oturum açma esnasında sayfanın postback sorununa yol açmaması için Page_Load metodu içerisinde önlemimizi alıyoruz:
Ardından butona tıklandığında kullanıcı bilgilerinin boş geçilmesini önlüyoruz:
Sırada ise çerezimizi oluşturacağız ancak çerez oluşturma işlemi için kullanıcıdan onay almalıyız,bunun için
eğer kullanıcı "beni hatırla" checkbox'ını işaretlemiş mi diye kontrol ediyoruz:
Kullanıcıdan onay aldığımıza göre çerezimizi oluşturabiliriz:
Çerez bilgilerini yazdıktan sonra projemizi çalıştırıyor ve ilk ASP.Net çerezimizi oluşturuyoruz:
Madem çerez oluşturulduysa bilgisayarımızda nereye yüklendi? Bu sorunun cevabını Google Chrome kullandığımız
için bilgisayarımızda
C:\Users\Kullanıcı\AppData\Local\Google\Chrome\User Data\Default
yolunu izliyoruz ve Cookies-journal dosyasını açıyoruz.Açtığımız dosya net okuyabileceğimiz kolay bir içerik değil ancak CTRL-F ile "sifre" isimli değişkenimizi yazdığımızda yazdığımız çerez bilgilerine ulaşabiliyoruz:
Elbette bu makalemde cookie ile veri hırsızlığı yapmak değil sadece iyi niyetle çerez tekniğini detaylarını öğreniyoruz,o yüzden kötü niyetle kullanırsanız üzülürüm :(
ASP.Net ile çerezimizi oluşturduğumuza göre şimdi de daha önce oluşturduğumuz çerezimizi okumaya geldik,bunun
için oluşturduğumuz çerezin adını (çerez değişkeni değil!)
Request.Cookies["cerezAdi"]["degisken"];
kod satırı ile yakalıyoruz.Şimdi ise aynı sayfamızın Page_Load metodu içerisinde oluşturduğumuz çerezi okuyup
kullanıcı adı ve şifre textboxlarını dolduracağız.
Öncelikle web sayfası açıldığında daha önceden çerez olmama ihtimaline karşın ya da diğer deyimle site ilk kez
ziyaret ediliyor olma olasığına karşı sitemize ait zaman aşımına uğramamış çerez olup olmadığını denetleyelim:
Zamanaşımına uğramamış dememizin sebebi az önce bahsettiğim gibi çerezler bilgisayarımızda belli bir süreliğine
tutulur ve ardından kalıcı olarak silinirler.
Şimdi oluşturduğumuz çerez bilgilerini yakalayıp textboxlarımızı dolduruyoruz:
Şimdi ise tekrar projemizi çalıştırıyoruz ancak bu defa kullanıcı adı ve şifre bilgilerini girmiyoruz çünkü oluşturduğumuz çerezden otomatik gelecekler:
ve da da!!! bilgilerimiz artık otomatik geliyor :)
Böylece ASP.Net cookie tekniği sayesinde bilgilerimizi arkaplanda tutmayı da öğrendik,çerezleme kısmında kafanızın
karıştığını tahmin ettiğim nokta çerezin adı kısmıdır o yüzden çerezin adını şu şekilde alt alta yazıyorum:
Çerez ile veri taşıma tekniğini öğrendiğimize göre artık makalemizin sonuna gelmiş bulunmaktayız,bir sonraki makalemizde görüşmek üzere hoşçakalın :)
Projeyi İndir