2017-12-04 8 views
1

암호 속성을 가진 하나의 사용자 정의 컨트롤을 사용하고 있습니다. 해당 암호 속성을 설정하려면 DependencyProperty viewmodel 만든 사용하고 있습니다. 내가 응용 프로그램을 실행하고 스눕 도구 (SnoopWpf)를 사용하여 디버깅하려고 할 때 사용자 컨트롤 속성을 살펴보면 해당 컨트롤에 설정된 암호가 표시됩니다. 스눕 도구가 암호 속성 값을 표시하지 못하도록하고 싶습니다. perticular 종속성 속성에 보안을 추가 할 수있는 방법이 있습니까?민감한 종속 속성 값은 WPF 응용 프로그램의 스눕 도구에 의해 노출됩니다. 어떻게 방지합니까?

XAML 코드 :

<class:MyControl x:Name="myControl" IsReadOnly="True" 
CtlPassword="{Binding myPassword, Mode=OneWay}" 
</class:MyControl> 


private static DependencyProperty PasswordProperty = DependencyProperty.Register("myPassword", typeof(String), typeof(myControl), new PropertyMetadata(null)); 

public String myPassword 
{ 
    get { return (String)GetValue(PasswordProperty); } 
    set { SetValue(PasswordProperty, value); } 
} 

내가 솔루션 중 하나에이 링크에 모습 - Snoop proof solution은 우리는이 myPassword 속성에 보안을 추가 할 수 있습니까? 어떤 디버깅 도구에서이 속성을 숨 깁니다.

+0

몇 가지 참고 사항 :

여기 SecurePassword 속성을 사용할 수에 바인딩하는 동작을 사용하는 방법의 예입니다. 첫째, 이름 지정 규칙이 있습니다. 속성의 이름은 'MyPassword'와 같이 대문자로 시작해야합니다. 속성은 또한 그 이름으로 등록되어야합니다. 가장 안전한 방법은 문자열 리터럴 인 "MyPassword"대신'nameof (MyPassword)'입니다. 둘째, 의존성 속성 필드는 속성과 마찬가지로 'Property' 접미사, 즉 MyPasswordProperty라는 이름을 가져야하며'public static readonly '로 선언되어야합니다. 마지막으로, Register 호출의 세 번째 매개 변수는 typeof (MyControl)이어야합니다. – Clemens

답변

0

암호를 string 속성에 저장하지 마십시오. 보안에 신경 쓰면 큰 문제가 아닙니다. 적어도 SecureString을 사용하거나 전혀 저장하지 마십시오. 당신의 종속성 속성 선언에

Bind SecurePassword to ViewModel