удаление данных из памяти - PullRequest
0 голосов
/ 31 августа 2011

используя ASP.NET и SQL Server 2005, я извлекаю некоторые конфиденциальные данные и отображаю их на своей странице.
Моя цель - вытащить эти данные из кучи как можно скорее. Я понимаю, что установка переменной набора данных в значение none / null по-прежнему оставляет данные в куче. Я обнаружил, что для пользовательских объектов мне нужно вручную обнулить содержимое, а для DataSets я могу вызвать DataSet.Clear().

Это лучшие способы сделать это?

А как насчет этого сценария:
DAL вызывает SQL, заполняет набор данных и возвращает набор данных (или указатель на набор данных в куче) в BLL. Затем BLL возвращает этот набор данных (т.е. указатель) в пользовательский интерфейс. Пользовательский интерфейс устанавливает источник данных сетки в этот набор данных. Когда и как я могу очистить этот набор данных?

В Page_Unload создать новую переменную набора данных, установить для нее источник данных сетки и вызвать .Clear ()?

Мое требование состоит не в том, чтобы на самом деле постоянно шифровать данные, а в том, чтобы очистить их, как только они не понадобятся, без ожидания GC или необходимости вручную вызывать Collect().

Ответы [ 2 ]

0 голосов
/ 31 августа 2011

Типы значений, такие как int и char, можно очистить, присвоив ему новое значение.

Строки не могут быть очищены таким образом. Если вы присвоите новое значение строковой переменной, она просто заменит ссылку и оставит старый строковый объект в куче для сбора.

Вызов Clear на DataSet не сотрет любые данные из кучи, он просто оставит все для сборщика мусора. Даже если вы перебираете все DataRow в каждом DataTable в наборе данных и присваиваете новое значение каждому полю, оно все равно просто оставит все значения в куче. Так как значения хранятся как object, каждый тип значения упакован, поэтому вы не можете стереть это значение, присвоив ему новое значение, оно оставит только упакованное значение в куче и создаст новое упакованное значение.

0 голосов
/ 31 августа 2011

Что вам нужно для обеспечения немедленного удаления данных из памяти?Как не существует идеального способа сделать это. холодная атака сделает сервер таким же уязвимым, если у злоумышленника будет физический доступ.

Все, что вы отправляете в браузер со своей страницей ASP.NET, не может быть удалено никогда (браузер может его кешировать, пользователь может сохранить его на свой жесткий диск и т. д.).В противном случае, если это происходит в оперативной памяти на сервере, когда удаление происходит, это не должно вызывать особого беспокойства.

Большая проблема заключается в том, почему эти конфиденциальные данные находятся в первую очередь.Особенно, если он не отправлен в браузер ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...