2012-03-15 4 views
0

У меня есть .webservice, зарегистрированное в моем приложении C#, полученном из SoapHttpClientProtocol. Удаленные методы вызывается с использованием метода Invoke(). Все работает нормально.Очистка заголовка SOAP после вызова webservice в C#

Моя проблема заключается в том, что я вызываю методы, передающие имя пользователя/passw, все по SSL, нет недостатка в безопасности в chanel, но после проверки на локальном компьютере, нюхающей в памяти, я вижу, что все SOAP заголовок в памяти процесса после вызова, поэтому любой, у кого есть простой инструмент, может читать память, я получаю имя пользователя/passw, отправленное в webservice.

Я хочу освободить память после вызова метода webservice. Я уже попытался избавиться от класса, поставив класс внутри «using() {}», но информация остается в памяти.

Существует способ очистить заголовки SOAP после использования webservice?

Есть способ заставить память очистить или сборщик мусора?

ответ

-1

Вы можете заставить сбор мусора по телефону:

GC.Collect() 

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

Но нет. Если кто-то достаточно яркий, чтобы исследовать память, они, вероятно, достаточно яркие, чтобы найти учетные данные в течение короткого окна, в котором они находятся.

Предоставлены ли пользователю имя пользователя? Если это так - возможно, так же легко уловить учетные данные.

UPDATE: Мне пришла в голову другая мысль ... Вы можете реализовать служебный вызов на языке, где у вас есть немного более явный контроль над памятью (например, C++). Затем вы можете сделать вызов и явно написать над частью памяти, имеющей учетные данные. Часть вызова веб-сервиса довольно проста в сокетах, однако часть SSL является нетривиальной.

+0

Ну, на самом деле это сложная ситуация (и в основном пользовательский запрос!) Представьте, что один пользователь вводит login/passw, выполняется вызов webservice, затем другой пользователь получает контроль над приложением, и в этот момент он может проверить память и получить информацию прошел в вызове, и этого я хочу избежать. – user810917

+0

Кстати, GC.Collect() ничего не сделал ... login/passw все еще там в памяти. Я попробовал также сделать второй звонок, ожидая, что первый был заменен, и это не так, оба вызова находятся в памяти с чистой информацией о логине/пароле ... любая помощь оценивается. – user810917

+0

Вот почему я предположил, что «Очистка определенной части памяти может не произойти». Я добавил еще одно предложение. – RQDQ

Смежные вопросы