2015-06-04 7 views
0

Я создавал форму с паролем и получал сообщение об ошибке, когда пытался привязать его к свойству в моей модели представления.В чем причина того, что PasswordBox не является связываемым

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

Я также узнал, что вы можете использовать прикрепленные свойства, чтобы сделать его связанным. Это более безопасно?

+0

Как вы сказали, из соображений безопасности. Лучший способ обойти это - использовать команду «Command» и отправить весь элемент «PasswordBox» через «CommandParameter». –

+0

Но мой вопрос в том, какие причины безопасности делают его менее безопасным, чем вызов именованного объекта? – Keithin8a

+0

Мне нравится ваша идея использования команды, которая кажется приятным элегантным решением. И намного проще, чем писать прикрепленное свойство, чтобы делать то, что было разработано не для этого. – Keithin8a

ответ

1

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

+0

Итак, когда вы вызываете passwordBoxName.password, это каркас, а не помещение его в незанятую память? – Keithin8a

+0

Риск безопасности всегда существует, но при использовании свойства напрямую, по крайней мере, он будет существовать в памяти в течение гораздо более короткого периода времени по сравнению с открытым DP. И вы также должны использовать SecureString. –

0

Используя инструменты, такие как WPF Inspector или Snoop, вы можете заглянуть в строку пароля. Поэтому не обязательно связывать пароль

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

  • Нет связанных вопросов^_^