2012-12-11 2 views
6

이미 많은 토론이있을 것이라고 확신하지만 애플리케이션에 비밀번호를 저장하는 방법은 무엇입니까? (나는 데이터베이스의 테이블에 사용자 비밀번호를 저장하는 것이 아니라 비밀번호를 사용하여 연결 문자열을 만들었습니다.)데이터베이스 비밀번호를 저장하는 방법

xml 파일과 같은 플랫 파일에 암호화 된 코드를 저장하고 읽는 것과 같은 제안을 보았습니다 + 실행시 해독하십시오. 이 응용 프로그램이 서버에서 실행되는 경우 이는 매우 좋은 선택이지만 최종 사용자의 PC에 응용 프로그램을 배포하려면 어떻게해야합니까? 즉, 플랫 파일이 사용자의 PC에 복사됩니다. 여전히 좋은 습관입니까? (내 본능은 '아니오')

나는 SecurityString의 존재를 안다. 그러나 나는 또한 SecurityString이 쉽게 깨질 수 있다는 한 글을 읽었다.

Windows 7과 함께 제공되는 Password Vault를 사용하는 것이 좋습니다. 프로그래밍 방식으로 활용하는 좋은 예가 있습니까? 나는 msdn에서 예제를 보았지만, 먼저 파일을 다운로드하고 Visual Studio 2012 EXPRESS에서 솔루션을 열면 'windows 8'이라는 레이블이 붙습니다. 열지 못했습니다.

모든 의견을 환영합니다 ... 많은 감사합니다. --update--

는의가 있다고 가정 해 봅시다 응용 프로그램은 Windows 도메인 내에서의 PC의 소수에서 실행됩니다. (1) 시작시 응용 프로그램은 LDAP 인증 (활성 디렉토리)을 수행합니다. 인증이 성공했을 때만 응용 프로그램이 계속 실행되며 (2) 응용 프로그램이 데이터베이스에 연결할 수 있고 db를 쿼리하는 데 사용자 입력을 받아 들여 db 암호가 연결 문자열을 작성하는 데 사용되는 곳입니다 (상업용 플러그인을 사용하지 않는 한 Windows 인증을 사용할 수있는 옵션이 없다고 생각하는 SQL SERVER 데이터베이스가 아닙니다.)

db는 동일한 도메인에 있으며 특정 범위의 IP 주소를 허용하도록 설정되었으며 SSL을 사용할 수 있습니다. 간단히 말해서,이 의미에서 꽤 안전합니다. 아직 안전하지 않은 유일한 비트는 응용 프로그램의 db passwd를 저장하는 방법입니다.

내 눈길을 사로 잡은 것은 Mysql Workbench였습니다. 암호 저장실에 저장된 암호를 포함하여 db 연결을 저장합니다. 그것은 mysql 자체가 패스워드 볼트를 구현 한 것이고, 나는 이것이 어떻게 행해지는지에 대해 매우 궁금하다.

+0

어떤 데이터베이스를 사용하며 어디에 호스팅합니까? 클라이언트와 동일한 Windows 도메인에 있습니까? – Jodrell

+0

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

+0

가능한 복제본 [C# 응용 프로그램에 데이터베이스 로그인과 암호를 안전하게 저장하는 방법] (http://stackoverflow.com/questions/11685206/how-do-i-safely-store-database-login-and-password) -in-ac-sharp-application) – Barmar

답변

5

시스템 보안 (예 : 외부 사용자 PC)이 없거나 거의 제어 할 수없는 곳에서 응용 프로그램을 배포하려는 경우 사용자 로그인을 만드는 것이 좋습니다. 이 로그인에 대해 사용자를 인증 한 다음 비교적 안전한 서버에서 데이터를 제공하는 데 필요한 자격 증명을 사용하십시오.

이것은 보안을 보장하지 않지만 나중에 어느 시점에서 암호를 변경해야하거나 개별 사용자가 유출 된 경우 유지 관리가 더 쉬울 것입니다.

8

사용자에게 암호를 제공하고 안전하게 유지할 수있는 방법이 없습니다. 컴파일 된 응용 프로그램에 숨겨져 있고 단방향 해시로 해시 된 경우에도 결정된 내용이 복구됩니다.

대신 보안 아키텍처를 고려해야합니다.

응용 프로그램이 연결되는 서비스를 제공하는 경우 공개 API의 일부로 좀 더 강력한 인증을 제공해야합니다.

연결 문자열이 분산 소프트웨어의 다른 부분에 연결하기위한 것이면 최종 사용자가 암호를 구성하고 키링이나 다른 암호화 된 저장소에 저장해야합니다.

- 업데이트 -

당신이 찾고있는 것 같습니다.

http://www.microsoft.com/indonesia/msdn/credmgmt.aspx

+0

답장을 보내 주셔서 감사합니다! 내 글을 업데이트했고 내 생각은 대단히 환영합니다. – user1866880

관련 문제