2013-04-19 14 views
6

Eski bir e-ticaret platformunda çalışıyorum ve kredi kartı numaralarıyla çalışırken bir sözleşme fark ettim. C# Üzerine yaz ve ardından null olarak ayarlandı

cardnumber = "11111111111111111111"; 
cardnumber = null; 

veya

update cards set cardnumber = '11111111111111111111' where customerid = @CustomerID 
update cards set cardnumber = null where customerid = @CustomerID 

sql

yılında

ben muhakeme değerini kaldırmayabilir hangi null ayarlamadan önce hafızasından kaldırmaktır sanırım. Ancak bu gerekçe, SQL Server ve/veya .NET VM'nin sadece null olarak ayarlanması durumunda verilerin tamamen kaldırılmayacağı güvenlik açıkları olduğunu gösteriyor gibi görünüyor.

  1. Anlayışım doğru mu?
  2. Hala bugün yapılan olması gerekiyor mu?
+4

Bilginize [SecureString] (http://msdn.microsoft.com/en-us/library/system.security.securestring.aspx) sınıf şimdi var. İlgilenebilirim. –

+0

Bu tabloda bir tetik var mı? – Steve

+0

@Steve'de tetik yok. – tgandrews

cevap

4

SQL için bilmiyorum, ancak C# 'da, mantıklı değil. Dize değişmez olduğundan, olabildiğince fazla denerseniz bile verileri geçersiz kılabilirsiniz. Eğer

cardnumber = "11111111111111111111"; 

yazarken

Bu sadece bellekte başka dize oluşturur, ancak eski bir kart numarası yere bellekte, hala burada.

Ve daha önce oluşturduğunuz dize KQUEUE

cardnumber = null; 

It yazmak ve şimdi hiçbir şey bir referans cardnumber işaret varken. Ama gerçek kart numarası içeren dizginiz hala burada.
Bu kod sadece yanlış değil, aynı zamanda yanlış bir güvenlik duygusu verdiği için tehlikelidir.

MSDN yorumlarda George Duckett tarafından paylaşılan SecureString sayfada söylediklerini bir göz atın:

System.string sınıfının bir örneği değişmez ve hem, artık gerektiğinde, olamaz programlı olarak çöp toplama için planlanmış; Yani, örnek oluşturulduktan sonra okunur ve örneğinin ne zaman bilgisayar belleğinden silineceğini tahmin etmek mümkün değildir. Sonuç olarak, bir String nesnesi, parola, kredi kartı numarası veya kişisel veriler gibi gibi hassas bilgiler içeriyorsa, numaralı başvuruda, bilgilerin bilgisayar belleğindeki verileri silememesi nedeniyle kullanıldığında bilgi açığa çıkması riski vardır.

fazla okuma:

İlgili konular