БД Oracle и SecureString - PullRequest
       36

БД Oracle и SecureString

0 голосов
/ 27 февраля 2012

Я сейчас храню пароль пользователя в SecureString.Что также сохраняется в случае сброса соединения с БД.

Моя проблема в том, что я пытаюсь передать этот пароль на OracleParamater, но я не уверен, поддерживает ли он его или нет,

Поддерживает ли Oracle Oracle.DataAccess dll SecureString или BStr?Так как если бы мне пришлось преобразовать его в строку, то это как бы победило цель SecureString.

--- EDIT

Я знаю, что SecureString - это уменьшение поверхности атакисохраняя как можно меньше незашифрованных копий пароля.Проблема в том, что в какой-то момент вы, конечно, должны расшифровать пароль, чтобы использовать его.Если бы я мог передать char[] или BStr или саму безопасную строку в OracleParameter, то я мог бы очистить ее после возврата вызова.Но если мне нужно создать строку, чтобы передать ее в Oracle, то я только что создал новую неизменяемую копию пароля.Так что я не совсем уверен, что тогда много выиграл.

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Нет - AFAIK то, что вы спрашиваете, не поддерживается ...

НО, даже если бы оно было поддержано, проблема безопасности останется, поскольку используемый драйвер Oracle (OCI) является собственным и ничего не знает о SecureString таким образом, он будет обрабатывать значение внутри без шифрования, что, в свою очередь, означает, что это значение может оказаться, например, незашифрованным в файле подкачки ...

Было бы немного более безопасно, если бы то, что вы запрашиваете, поддерживалосьсторона .NET, но просто так ...

ЕСЛИ вам действительно нужен такой уровень безопасности, я бы порекомендовал изменить эту часть вашего программного обеспечения, чтобы использовать зашифрованные значения таким образом, чтобы на стороне сервера (Oracle DB) вещей не требует «простого текста», но работает с зашифрованными значениями ...

0 голосов
/ 27 февраля 2012

SecureString - это хранилище вашей личной информации в памяти.

Причина, по которой это было реализовано, заключается в том, что если вы используете простой string для хранения частной информации пользователя, даже после того, как вы больше не ссылаетесь на этот объект и он уже был собран сборщиком мусора, потенциально возможно, что хакерский код выполнит дамп Ваша память процесса может по-прежнему обращаться к данным, доступным в этом месте памяти, поэтому обращайтесь к частной информации.

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

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

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