2012-08-31 3 views
1

Remember me 기능 (사용자 이름과 암호 자격 증명 모두)에서 작업하는 동안 UseSystemPasswordChar 속성을 true로 설정할 때 숨겨진 암호를 복구 할 수 있다는 것을 알게되었습니다. 아래의 스크린 샷에 예 :TextBox의 UseSystemPasswordChar 보안 확장

UseSystemPasswordChar property set to true

나는 또한 많은 응용 프로그램이 같은 문제에 대한 고통을하지만 모든 할 것으로 나타났습니다, 그래서이를 방지 할 수있는 방법이 있어야합니다 가정합니다.

질문은이 방법을 사용하여 자격 증명을 검색 할 수 없도록하려면 어떤 접근 방식을 취해야합니까?

미리 감사드립니다.

+0

다른 앱이 자신의 메모리 공간에 들어가서 객체/컨트롤을 쿼리 할까 걱정됩니까? 모든 컨트롤은 메모리에 비밀번호를 포함 할 것이므로 필요에 따라 후속 핸드 오프가 가능합니다. –

+0

다른 방법이 있어야합니다. 왜냐하면 Scott과 토론을 읽었을 때 KeyPass를 언급하는 것을 볼 수 있습니다.이 KeyPass는 또한 C#에서이 문제를 겪지 않고 작성되었습니다. 로그인 자격 증명이 필요한 C# 응용 프로그램을 찾기가 까다 롭지 만 몇 가지 예제를 찾으려고합니다. 몇 가지 예 : filezilla는이 문제를 겪고 있습니다. Minecraft의 발사기는 그렇지 않습니다. 두 언어 다. 지금까지 로그인 정보를 공개하지 않는 유일한 .NET 애플리케이션은 KeyPass입니다. 그러나 한 응용 프로그램 만이이를 수행 할 수 있으므로 가능해야합니다. – coolmine

답변

1

일단 암호가 저장되면 사용자에게 다시 표시 할 때 이전 암호를 다시 상자에 넣지 않습니다. 텍스트 상자가 자리 표시 자 텍스트와 일치하면 저장된 암호를 사용한다는 일부 자리 표시 자 텍스트를 넣습니다.

다른 팁에 대해 가능한 경우 암호 자체 대신 암호의 해시를 메모리에 저장하십시오. Process Explorer와 같은 것으로부터 strings 유틸리티를 사용하여 메모리에 암호 문자열을 찾을 수 있습니다.

암호 대신 해시를 저장할 수없는 경우 (예를 들어 다른 서비스에 연결 중이고 일반 텍스트 암호를 제출해야하는 경우) SecureString을 사용할 수 있습니다. 메모리 문자열 암호화.

는 장기적으로 안전하게 암호를 저장하는 것처럼, 단지 메모리에서 DataProtectionScopeCurrentUser에 너무에만 로그인 한 사용자가 얻을 수있는 하드 드라이브에 기록하기 전에 문자열을 암호화하는 ProtectedData 클래스를 사용하여 설정 데이터.

기억해 두어야 할 점 : 누군가가 저장된 암호가 무엇인지를 발견 할 수 없지만 암호를 가져 오는 데 어려움을 줄 수 있음을 의미합니다.

+0

그게 내 첫 접근법 (실제 비밀 번호와 동일한 길이의 자리 표시 문자를 사용) 이었지만이 때문에 고통받지 않는 프로그램에는 텍스트가 표시되지 않으므로 다른 방법이 있어야한다고 가정했습니다. 예를 들어 C#으로 작성된 KeePass 응용 프로그램도 있습니다. 시도하기 전에 직접 입력하더라도 로그인 화면에 사용 된 문자는 검색 할 수 없습니다. – coolmine

+0

길이가 같지 않아도됩니다. Windows는 항상이 작업을 수행하며, 사용자 또는 예약 된 작업으로 잠시 로그인 한 서비스의 저장된 암호에 점의 수를 계산합니다. keypass가 그것을 어떻게하는지에 관해서는, 나도 몰라, 나는 패스워드 마스크를 가능하게하는 것이 다른 애플 리케이션이 보지 못하도록 두건 아래에 약간의 비트를 설정한다는 인상하에 있었다. 그들은 [SecureTextBox] (http://securetextbox.codeplex.com/)와 같은 비표준 컨트롤을 사용하고있을 수 있습니다. –

+0

이것은 내가 비틀 거리기 전까지 내 추측/희망이었습니다.내가 지금보고있는 것은 위에서 언급 한 것과 같은 C# 응용 프로그램이므로 다른 프로그램이이 문제를 어떻게 처리 하는지를 알아 보는 것입니다. – coolmine