Очистка заголовка SOAP после вызова веб-сервиса в C # - PullRequest
0 голосов
/ 15 марта 2012

У меня зарегистрировано .webservice в моем приложении на C #, основанном на SoapHttpClientProtocol. Удаленные методы вызываются с помощью метода Invoke (). Все работает хорошо.

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

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

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

Есть ли способ принудительно очистить память или сборщик мусора?

1 Ответ

0 голосов
/ 15 марта 2012

Вы можете форсировать сборку мусора, набрав:

GC.Collect()

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

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

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

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

...