【发布时间】:2013-04-19 09:56:16
【问题描述】:
我正在开发一个旧版电子商务平台,并且在处理信用卡号时注意到了一个惯例。 C#
cardnumber = "11111111111111111111";
cardnumber = null;
或在sql中
update cards set cardnumber = '11111111111111111111' where customerid = @CustomerID
update cards set cardnumber = null where customerid = @CustomerID
我认为原因是在将其设置为 null 之前将其从内存中删除,这可能不会删除该值。但这种推理似乎表明 SQL Server 和/或 .NET VM 存在漏洞,即仅将其设置为 null 不会完全删除数据,只是说它可用。
- 我的理解正确吗?
- 是否还需要 今天进行了吗?
【问题讨论】:
-
仅供参考 SecureString 类现在存在。可能会感兴趣。
-
那张表上有触发器吗?
-
@Steve 桌上没有触发器。
-
@tgandrews 那肯定是巫毒编程。字节仍将保留在内存中的某个位置,直到它们被覆盖(大概只有当 GC 运行 并且 该内存块被重用,而不是仅仅被放置在空闲内存列表中)。 George 提到的 SecureString 当然是正确的解决方案(至少在 .Net 中)。
-
我的印象是,简单地用
0或1覆盖数据并不意味着数据将变得不可恢复,并且一些偏执的人更愿意通过覆盖来删除他们的数据多次随机序列。也许这就是它的全部意义?
标签: c# asp.net sql-server e-commerce pci-compliance