C# SecureString Sınıfı



Github'da yer alan bir projeyi incelerken bugünkü blog yazısına konu çıkan SecureString sınıfının kullanıldığını gördüm. Daha önce hiç bir projede kullanmadım ve kullananı da görmedim açıkcası.

Ben de bu sınıfı araştırdıktan sonra aslında güvenlik ile ilgili önemli bir konu olduğunu gördüğüm için ilk defa duyacaklar için bir yazı yazmak istedim.

Secure String Class Ne Ola ?

Öncelikle siz bir String nesnesi yaratıp içine parola veya kredi kartı no gibi arz eden bilgiler verdiniz. Bu nesneyi gerekli yerlerde kullandınız ve işiniz bitti. Nesne şuan belleğin head alanında duruyor. Bir süre bu nesneyi kullanmadınız ve ünlü garbage collector (çöp toplayıcısı) herhangi bir zamanda gelecek , optimizasyon adına heap alanında ki string nesnesine ait referansı silecek. Fakat buradan silinmesi başka yerde referansı olmayacağı anlamına gelmiyor -burası önemli.

Üstte yazan temel senaryoda sıkıntılar var ! Birincisi Garbage Collector 'un ne zaman çalışacağı belli değil. İkincisi bu nesneler bilgisayar açık olduğu sürece bellekten tam olarak silinmeyecek. Ve bu durumda hacker arkadaşlarımızın bilgilere bir şekilde ulaşabileceği anlamına geliyor.

Secure String Class Kullanımı

Üstte yazan mantığı anladıysak şimdi Secure String bize ne avantaj sağlıyor ona bakalım. Şu işlemleri bizim için otomatik olarak yapacaktır ;

  • Şifreler (Encryption)
  • Belleğe Sabitler (garbage collector'un taşımasını engeller) (pinned in memory)
  • Salt Okunur Yapar (Read Only)
  • Bellekten Tamamen Silinebilir 

Ek olarak ; Sealed tanımlanmış bir class dır. Inheritance yapılamaz. System.Security namespace içerisindedir.

Kullanım Örneği


Yeni yazılarda görüşmek üzere , sağlıcakla

Kaynaklar

https://msdn.microsoft.com/tr-tr/library/system.security.securestring(v=vs.110).aspx
http://www.codeproject.com/Tips/549109/Working-with-SecureString

Yorumlar

Bu blogdaki popüler yayınlar

Brackets Eklentileri

Asp.Net Mvc Bundle Kullanımı

Asp.Net MVC ile Hava Durumu