Asp.net 从内存中删除数据

Asp.net 从内存中删除数据,asp.net,memory,heap-memory,Asp.net,Memory,Heap Memory,使用ASP.NET和SQL Server 2005,我检索了一些敏感数据并将其显示在我的页面上。 我的目标是尽快将这些数据从堆中取出。我知道将dataset变量设置为nothing/null仍然会将数据留在堆中。我发现,对于自定义对象,我必须手动清空内容,对于数据集,我可以调用DataSet.Clear() 这些是最好的方法吗 这个场景怎么样: DAL调用SQL,填充数据集,并将数据集(或指向堆中数据集的指针)返回给BLL。然后,BLL将该数据集(即指针)返回到UI。UI将网格的数据源设置为该数

使用ASP.NET和SQL Server 2005,我检索了一些敏感数据并将其显示在我的页面上。
我的目标是尽快将这些数据从堆中取出。我知道将dataset变量设置为nothing/null仍然会将数据留在堆中。我发现,对于自定义对象,我必须手动清空内容,对于数据集,我可以调用
DataSet.Clear()

这些是最好的方法吗

这个场景怎么样:
DAL调用SQL,填充数据集,并将数据集(或指向堆中数据集的指针)返回给BLL。然后,BLL将该数据集(即指针)返回到UI。UI将网格的数据源设置为该数据集。何时以及如何清除该数据集

在Page_Unload中,我是否创建一个新的dataset变量,将网格的DataSource设置为该变量并调用.Clear()


我的要求不是始终加密数据,而是在不需要时立即清除数据,而无需等待GC或手动调用
Collect()

如何确保立即从内存中删除数据?因为没有完美的方法可以做到这一点。如果攻击者具有物理访问权限,则会使服务器同样易受攻击

您通过ASP.NET页面发送到浏览器的任何内容都无法删除(浏览器可以缓存它,用户可以将它保存到他们的HDD中,等等)。否则,当删除发生时,如果它在服务器上的RAM中,则不应该太担心


更大的问题是为什么这些敏感数据首先存在。特别是如果它没有发送到浏览器…

值类型,如
int
char
可以通过为其指定新值来清除

字符串不能以这种方式清除。如果为字符串变量分配新值,它只会替换引用,并将旧字符串对象留在堆上收集


数据集上调用
Clear
不会从堆中删除任何数据,它只会将所有数据留给垃圾收集器。即使您在数据集中的每个
DataTable
中循环每个
DataRow
,并为每个字段分配一个新值,它仍然会将所有值保留在堆中。由于值存储为
对象
,每个值类型都是装箱的,因此您不能通过为其分配新值来擦除该值,它只会将装箱的值留在堆上并创建一个新的装箱值。

我感到困惑。只有html、css、javascript(以及yes viewstate)被发送到浏览器。堆在服务器上,垃圾在服务器上收集。是的,堆在服务器上,这是一个服务器端问题。