Android’de SQLite Veritabanı Şifreleme

Bir sistem tasarlanırken göz önünde bulundurulması gereken en önemli konulardan biri veri güvenliğidir. Sistem üzerinde tutulacak ve işlenecek veriler ticari değeri yüksek ya da mahrem olabilir. Verilerin ele geçmesi büyük risk oluşturacağı için verinin korunması gerekir. Verinin korunmasıyla alakalı Android’de Encryption (Veri Şifreleme) makalemden bilgi edinebilirsiniz. Verinin korunma yöntemlerinden biri de verinin depolandığı yapıyı(veritabanını) şifrelemektir.

Bu makalemde sizlere Android uygulama geliştirirken, bazı verilerimizi depoladığımız SQLITE veritabanı dosya yapısını şifreleyerek, verilerimizi nasıl daha güvenli saklayacağımızı anlatacağım.

SQLITE veritabanı dosyalarını nasıl şifreleriz?

SQLITE veritabanı dosyalarını, 256 bit AES şifrelemesini sağlayan SQLCipher adındaki bir kütüphaneyi kullanarak şifreleyebiliriz. SQLCipher kütüphanesini barındıran Android uygulamalar, client veritabanı işlemlerinde standart SQLite API’sini kullanır.

Aşağıda belirttiğim, ilk resimde SQLITE ile standart bir tablo oluşturma sorgusu bulunmaktadır. Hemen altında siyah resimde ise ilk resimdeki sorgunun SQLCipher ile şifrelenmiş hali bulunmaktadır. Böylelikle SQLITE veritabanımızın şifrelendiğinde oluşan durumunu görmüş olduk.

Bir Android uygulamasında, SQLCipher kütüphanesinden faydalanarak, kullanıcı adını ve yaşını veritabanına eklesin. Sonrasında veritabanından bu bilgileri alıp, listelediğimiz bir örnek yapalım.Örnek uygulamamız aşağıdaki gibi gözükecektir.

Örneklediğim projemin kodlarını indirmek isterseniz; yapmanız gereken tek şey aşağıya koyduğum KODLARI İNDİR resmine tıklamak.

download

1-Gerekli Kütüphanelerin Eklenmesi

Android Studio Ide ile oluşturduğum projemin app dizinin altındaki build.gradle dosyasını açıyoruz. Dependencies kod bloklarının arasına aşağıdaki kodları yerleştirerek SQLCipher kütüphanesini yüklüyoruz.

2-Arayüz Kodlaması

Örneğimizdeki görüntüyü elde etmek içim, 1 tane xml dosyasında kodlama yapmamız gerekmektedir. Xml kodlarımız;

3-Java kodlama ile işlevsellik oluşturma

DBHelper adındaki sınıfımızda, SQLCipher kütüphanesinde barınan SQLite API ile veritabanımızı ve tablomuzu oluşturup, ilgili tabloda ekleme, silme,güncelleme ve veri çekme gibi işlemleri yapan metodlarımızı kodladık.

Son olarak MainActivity sınıfımızda, EditText text alanından aldığımız ad ve yaş değerlerini, DBHelper sınıfında bulunan insert metodunu kullanarak veritabanına ekledik. Sonrasında bu değerleride DBHelper sınıfında bulunan query metodunu kullanarak uygulamada listeledik.Küçük bir not; listeleme işlemini uygulama anasayfada buton vb bir işlemle sayfayı refresh yapmadığım için eklediğiniz değerleri uygulamayı, kapatıp yeniden açtığınızda göreceksiniz.

Kaynaklar

1 –https://www.zetetic.net/sqlcipher/sqlcipher-for-android/

Kategori Genel
Etiketler