CyberFlow Logo CyberFlow BLOG
Web Fundamentals

LocalStorage ve SessionStorage: Web Geliştiricileri için Temel Rehber

✍️ Ahmet BİRKAN 📂 Web Fundamentals

Web uygulamalarında veri saklamanın temel yolları olan LocalStorage ve SessionStorage'u keşfedin. Bu rehber, veri yönetiminde etkili yöntemler sunuyor.

LocalStorage ve SessionStorage: Web Geliştiricileri için Temel Rehber

Web geliştirme süreçlerinde LocalStorage ve SessionStorage kullanımı büyük önem taşır. Bu rehber, veri depolama yöntemlerini anlamanıza ve uygulamanızı geliştirmenize yardımcı olacak.

Giriş ve Konumlandırma

Web geliştiriciliği alanında, kullanıcı deneyimini geliştirmek için veri yönetimi büyük bir öneme sahiptir. Bu bağlamda, HTML5 ile birlikte tarayıcılarda sunulan LocalStorage ve SessionStorage, geliştiricilere verileri saklama konusunda önemli araçlar sunmaktadır. Her iki depolama yöntemi, tarayıcıda veri tutmanın farklı şekillerini sağlar ve bu nedenle her birinin anlaşılması kritik bir gerekliliktir.

LocalStorage ve SessionStorage Nedir?

LocalStorage, kullanıcı verilerini tarayıcıda kalıcı olarak saklamak için kullanılan bir Web API'sidir. Kullanıcı tarayıcıyı kapatsa bile, LocalStorage'da depolanan veriler kaybolmaz. Bu özellik, uzun süreli veri saklama ihtiyacı duyan uygulamalar için idealdir. Örneğin, bir kullanıcı tercihleri veya uygulama ayarlarının sürekli olarak saklanması gerektiğinde LocalStorage kullanmak mantıklıdır.

Öte yandan, SessionStorage sadece geçici veri saklamak için kullanılır. Bu depolama alanı, yalnızca bir tarayıcı sekmesi açık kaldığı sürece geçerlidir. Sekme kapandığında veriler otomatik olarak silinir. Bu nedenle, oturum bazında geçici bilgiler için SessionStorage tercih edilmelidir. Örneğin, kullanıcı bir formun giriş bilgilerini dolduruyorsa ve bu bilgiler yalnızca oturum süresince geçerliyse, SessionStorage kullanmak uygun bir tercih olacaktır.

Neden Önemlidir?

Siber güvenlik açısından, kullanıcı verilerinin doğru bir şekilde saklanması ve yönetilmesi kritik bir konudur. Kullanıcı bilgileri veya uygulama ağaçları, kötü niyetli saldırılara karşı savunmasız olabilir. LocalStorage ve SessionStorage ile verilerin doğru biçimde saklanması, verilerin istenmeyen müdahalelere karşı korunmasını sağlar.

Özellikle, pentest (penetrasyon testi) sürecinde, geliştiricilerin bu depolama yöntemlerinin nasıl işlediğini ve olası güvenlik açıklarını anlaması önemlidir. Kullanıcı verilerinin yanlış yönetimi, veri hırsızlığına veya kullanıcı bilgilerini kaybetmeye yol açabilir. Bu bağlamda, sessiz bir düşman olan XSS (Cross-Site Scripting) saldırıları üzerinden veri sızdırma riskleri ortaya çıkabilmektedir. LocalStorage ve SessionStorage gibi alanlara kaydedilen verilerin güvenliğini sağlamak, uygulama geliştirmede temel güvenlik önlemlerini almak anlamına gelir.

Teknik Hazırlık

LocalStorage ve SessionStorage’ın doğru kullanımı, web geliştiricileri için belirsizlikleri azaltır. Geliştiricilerin bu yöntemleri etkili bir biçimde kullanabilmesi için öncelikle veri depolama süresi, veri silme ve güncelleme gibi temel işlemleri anlaması gerekmektedir. Her iki yöntem de anahtar-değer çiftleri ile çalışmakta olup, bu sayede verilerin saklanması ve erişilmesi oldukça kolaydır.

Veri saklama işlemleri için sıklıkla localStorage.setItem ve sessionStorage.setItem yöntemleri kullanılmaktadır. Örneğin:

// LocalStorage'a veri ekleme
localStorage.setItem('kullaniciAyarlari', JSON.stringify({ dil: 'tr', tema: 'koyu' }));

// SessionStorage'a veri ekleme
sessionStorage.setItem('geciciVeri', 'Bu veriler oturum süresince saklanır');

Bu örnekler, LocalStorage ve SessionStorage’ın temel kullanımını göstermektedir. Bu yöntemlerle saklanan veriler üzerinden veri okuma işlemleri yapmak için de getItem kullanılır:

// LocalStorage'dan veri alma
const kullaniciAyarlari = JSON.parse(localStorage.getItem('kullaniciAyarlari'));

// SessionStorage'dan veri alma
const geciciVeri = sessionStorage.getItem('geciciVeri');

Sonuç olarak, LocalStorage ve SessionStorage, web uygulamalarında veri saklama ve yönetimi için son derece faydalı araçlar sunar. Ancak bu araçların doğru ve güvenli bir şekilde kullanılması, uygulamanızın güvenilirliği ve kullanıcı deneyimi açısından kritik bir öneme sahiptir. Bu yazıda, bu iki önemli yapı hakkında detaylı bilgiye sahip olmanızı sağlayacak içeriklere odaklanacağız.

Teknik Analiz ve Uygulama

LocalStorage ve SessionStorage Kullanımı

Web uygulamalarında kullanıcı verilerini yönetmek için sıklıkla kullanılan iki yöntem LocalStorage ve SessionStorage’dır. Bu yöntemler, kullanıcıların tarayıcıları üzerinde veri saklama imkânı sunar. LocalStorage, verilerin kalıcı olarak saklanmasını sağlarken, SessionStorage yalnızca geçerli oturum süresince verileri tutar.

LocalStorage ve SessionStorage Arasındaki Farklar

Terim Açıklama
LocalStorage Tarayıcıda kalıcı olarak veri saklar; kullanıcı tarayıcıyı kapatsa bile veriler korunur.
SessionStorage Kullanıcı oturumu süresince verileri saklar; tarayıcı sekmesi kapatıldığında veriler silinir.

Bu farklar, hangi veri saklama yönteminin ne zaman kullanılacağı konusunda karar vermek için oldukça önemlidir. Örneğin, kullanıcı tercihlerini kaydetmek için LocalStorage tercih edilebilirken, geçici form verileri için SessionStorage kullanılabilir.

Veri Depolama Seçenekleri

Her iki depolama yöntemi de key-value çiftleri ile veri saklar. Javascript ile bu yöntemlerin kullanımına ilişkin örnekler şu şekildedir:

// LocalStorage'a veri ekleme
localStorage.setItem('username', 'JohnDoe');

// SessionStorage'a veri ekleme
sessionStorage.setItem('sessionID', '12345');

Bu komutlar sayesinde uygulama durumu, kullanıcı tercihleri ya da oturum bilgileri saklanabilir. Ancak, veri boyutu sınırlarını unutmamak önemlidir. Genellikle, her iki yöntem için de maksimum veri saklama kapasitesi 5-10 MB arasındadır.

LocalStorage ve SessionStorage ile Veri Alma

Depolanan verilere erişmek için getItem yöntemi kullanılır. Örnek kullanım:

// LocalStorage'dan veri alma
const username = localStorage.getItem('username');
console.log(username);

// SessionStorage'dan veri alma
const sessionID = sessionStorage.getItem('sessionID');
console.log(sessionID);

Bu kod parçacıkları, uygulamanın mevcut durumunu yönlendirmek için kullanılabilir. Kullanıcı bilgilerini güncelleme veya görüntüleme işlemleri bu adımda yapılmaktadır.

Veri Depolama Süresi

Veri saklamanın ne kadar süreyle geçerli olacağını kavramak gereklidir. LocalStorage'da saklanan veriler, kullanıcı tarayıcıyı kapatsa bile kalıcıdır. Fakat SessionStorage'daki veriler, sadece geçerli oturum süresince aktif kalır. Uygulama senaryosuna göre uygun yöntemin seçilmesi kritik bir aşamadır.

Örneğin, kullanıcıdan alınan bir form verisinin okunaklı bir şekilde saklanması gerekiyorsa LocalStorage kullanmak daha mantıklıdır. Ancak, geçici bir oturum süresinde yapılan işlemler veya detaylar için SessionStorage uygun bir çözümdür.

LocalStorage ve SessionStorage ile Veri Silme

Veri silme işlemleri, gerektiğinde kullanıcının geçmişteki tercihlerini veya oturum bilgilerini temizlemek için yapılabilir. Bunu başarmak için removeItem yöntemi kullanılabilir:

// LocalStorage'dan veri silme
localStorage.removeItem('username');

// SessionStorage'dan veri silme
sessionStorage.removeItem('sessionID');

Bu yöntemler, uygulamanın belirli bir kısmını temizleyerek kullanıcı deneyimini iyileştirmeye yardımcı olabilir. Kullanıcıdan hangi verilerin silineceğine ilişkin kararlar, uygulamanın gereksinimleri doğrultusunda verilmelidir.

LocalStorage ve SessionStorage ile Veri Güncelleme

Mevcut verinin güncellenmesi gerektiğinde, öncelikle güncellenmek istenen verinin getItem ile alınması ve ardından setItem ile yeni bir değerle değiştirilmesi gereklidir:

// LocalStorage'daki veriyi güncelleme
localStorage.setItem('username', 'JaneDoe');

// SessionStorage'daki veriyi güncelleme
sessionStorage.setItem('sessionID', '67890');

Bu metodoloji sayesinde, uygulama içindeki kullanıcı deneyimi sürekli olarak yeniliklere açık bir hale getirilir.

Veri Geçerliliği Kontrolü

Veri geçerliliği, kullanıcıdan alınan bilgilerin doğruluğunu kontrol etmek ve olası hataların önüne geçmek açısından kritik öneme sahiptir. Örneğin, bir kullanıcının e-posta adresinin geçerliliğini kontrol etmek için basit bir düzenli ifade kullanılabilir:

function validateEmail(email) {
    const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return regex.test(email);
}

const email = localStorage.getItem('userEmail');
if (!validateEmail(email)) {
    console.error('Geçersiz e-posta adresi');
}

Bu kontrol, uygulamanın güvenilirliğini artırır ve kullanıcıların hatalı veri girmesini önler. LocalStorage ve SessionStorage, doğru bir şekilde kullanıldığında, web uygulamalarında veri yönetimini etkin bir şekilde sağlamaktadır. Web geliştiricilerinin bu yöntemleri anlaması ve uygulaması, kullanıcı deneyimini geliştirirken veri yönetimini de sağlayacaktır.

Risk, Yorumlama ve Savunma

Web geliştirme süreçlerinde LocalStorage ve SessionStorage gibi tarayıcı tabanlı veri depolama çözümlerinin kullanımı artarken, bu yöntemlerin güvenlik riskleri de göz ardı edilemez hale geliyor. Doğru yapılandırılmadıkları veya güvenlik önlemleri alınmadıkları takdirde, kötü niyetli aktörler tarafından veri sızıntısına ve diğer tehditlere açık hale gelebilirler. Bu bölümde, LocalStorage ve SessionStorage kullanımıyla ilgili olası riskleri, bu risklerin yorumlanmasını ve alınabilecek profesyonel önlemleri ele alacağız.

Veri Sızıntısı ve Yanlış Yapılandırma

LocalStorage ve SessionStorage, kullanıcı verilerini tarayıcıda saklar, ancak bu verilerin korunmaması durumunda ciddi riskler açığa çıkabilir. Kullanıcıların kişisel bilgileri, oturum kimlikleri veya diğer hassas verileri, bilgisayar korsanları tarafından erişilebilir duruma gelebilir. Örneğin, bir siber saldırgan XSS (Cross-Site Scripting) tekniği ile LocalStorage'daki verileri ele geçirebilir.

Örnek senaryo: Aşağıdaki gibi bir JavaScript kodu düşünün:

let userInfo = {
    username: "kullanici",
    password: "parola123"
};

localStorage.setItem('user', JSON.stringify(userInfo));

Eğer siteniz XSS açığına sahipse, kötü niyetli bir kullanıcı bu veriye erişebilir ve kullanıcının oturumunu veya kimliğini ele geçirebilir. Bu gibi durumlarda, LocalStorage üzerindeki verilerin şifrelenmesi ve yalnızca güvenli bağlantılar üzerinden erişilebilmesi önemlidir.

Topoloji ve Servis Tespiti

Web uygulamanızın yapısı, veri güvenliğini doğrudan etkiler. LocalStorage ve SessionStorage kullanarak oluşturulan veri yapılarının net bir şekilde anlaşılması, güvenlik açığını azaltır. Uygulama topolojisi, hangi verilerin hangi kaynaklardan alındığını ve hangi servislerin kullanıldığını bilmek, güvenlik zaafiyetlerinin tespit edilmesine yardımcı olur.

Veri tespiti yapılacakken alınan bilgiler net bir şekilde analiz edilmelidir. Uygulamanızın hangi verileri sakladığını ve bu verilerin nasıl korunduğunu bilmek, korunmasız alanların belirlenmesini sağlar.

Profesyonel Önlemler ve Hardening Önerileri

  1. Güvenli Depolama Uygulamaları: Kullanıcı verileri LocalStorage ve SessionStorage'a kaydedilmeden önce mutlaka şifrelenmeli ve yalnızca gerekli durumlarda kullanıma sunulmalıdır. Özel verilerin saklanması gerekiyorsa, bunun için daha güçlü mekanizmalar düşünülmelidir (örneğin, sunucu tarafı depolama).

  2. XSS Koruma Mekanizmaları: Uygulamanızda XSS saldırılarına karşı güvenlik geliştirin. İçerik güvenlik politikaları (CSP) kullanarak belirli kaynaklardan gelen verilerin işlenmesini kısıtlayabilirsiniz. Böylece istenmeyen JavaScript kodlarının çalıştırılmasını engelleyebilirsiniz.

  3. Veri Geçerliliği Kontrolü: Kullanıcıdan alınan verilerin geçerli olup olmadığı sıkı bir şekilde kontrol edilmelidir. Hatalı veya beklenmeyen veri girişlerinin engellenmesi, uygulamanızın güvenliğini artırır. Verilerin türü ve formatı, uygun bir doğrulama mekanizması ile kontrol edilmelidir.

function validateUserData(data) {
    return typeof data.username === 'string' && typeof data.password === 'string' && data.username.length > 0 && data.password.length > 0;
}
  1. Oturum Sürelerinin Yönetimi: SessionStorage kullanıyorsanız, oturumun sona erme sürelerini doğru ayarlamak önemlidir. Oturum sürelerinin kısa olması, kullanıcıların datalarını koruma altına alır.

Sonuç

LocalStorage ve SessionStorage, web uygulamaları için kullanışlı veri depolama çözümleri sunar. Ancak, bu çözümlerin beraberinde getirdiği riskleri göz ardı etmemek gerekir. Yanlış yapılandırmalar veya zafiyetler, veri sızıntısı gibi tehlikelere yol açabilir. Uygulama geliştiricileri, güvenliği artırmak için profesyonel önlemler almalı ve veri geçerliliği gibi unsurları ihmal etmemelidir. Kullanıcı verilerinin güvenli bir şekilde saklanması, hem kullanıcı güvenini artırır hem de uygulamanızın sağlamlığını pekiştirir.