문제

WinForms 응용 프로그램에서는 로컬 레벨에서 연결 문자열을 해시하고 있습니다.

그러나 여기 몇 가지 질문이 있습니다.

앱이 연결 문자열을 해독 한 후 연결 문자열 정보가 명확한 텍스트로 전송됩니다. 내 앱이 로컬로 설치되어 있으므로 중간에있는 사람이 어떤 사용자가 될 수 있습니까?

연결 문자열을 보호하려면 어떻게 추가 인증서가 필요한 "강제 암호화"옵션을 becide 할 수 있습니까?

도움이 되었습니까?

해결책

연결 문자열을 안전하고 안전하게 유지하는 것과 관련하여 여기에는 제한된 양의 접근 방식 만 있습니다.

하나의 옵션, 연결 문자열이 web.config 또는 app.config 파일 (웹 및 Windows 앱의 경우)에 저장된 경우 값을 암호화 할 수 있습니다. 다음은 수행 할 수있는 방법을 자세히 설명하는 몇 가지 링크가 있습니다.

ASP.NET 2.0의 web.config 값을 암호화합니다

VS 2005의 연결 문자열을 암호화합니다. Config 파일

물론, 당신이 옳게 말하면, 이것은 응용 프로그램이 사용자의 컴퓨터에서 잘 실행될 수 있기 때문에 원하는 보안을 달성하지 못할 수 있습니다. 키는 사용자의 컴퓨터에서도 사용할 수 있습니다. 지식이 풍부하고 진취적인 사용자가 "일반 텍스트"연결 문자열에 액세스 할 수 있습니다.

IMHO, 사용자가 데이터베이스 연결 문자열을 보지 못하도록하는 가장 좋은 방법 중 하나는 암호화 여부에 따라 데이터베이스 연결 문자열을 먼저 제공하지 않는 것입니다. 따라서 Windows Forms 응용 프로그램은 데이터베이스 (연결 문자열 사용)와 직접 대화하지 않고 웹 서비스 (예 : 웹 서비스)와 직접 대화해야합니다.

물론 Windows Form Application에 웹 서비스에 액세스 할 수있는 URL을 제공하지만이 웹 서비스의 사용은 사용자 별 사용자 이름/비밀번호 조합으로 만 액세스 할 수있게하여 제한되고 제어됩니다.

이렇게하면 웹 서비스를 호스팅 할 수 있습니다 ( 웹 서비스 - Windows Form의 응용 프로그램이 Over와 통신하는 원격 응용 프로그램 일 수 있습니다. .NET 리모 팅 또는 WCF) 물리적으로 별도의 서버/컴퓨터에서 하다 이 기계를 완전히 제어하고 보호하십시오 주변 보안.

데이터베이스의 연결 문자열에 액세스 할 수있는이 보안 머신에서 실행중인 응용 프로그램 및 서비스 이며이 연결 문자열은이 시스템의 주변 외부에서 공개 될 필요가 없으므로 (위에서 언급 한 주변을 완전히 안전하게 유지합니다) 보안이 제자리에 있고 효과적입니다).

물론,이 모든 것을 구현한다는 것은 응용 프로그램의 크기와 특성에 따라 가치가 있거나 가치가 없을 수도있는 응용 프로그램에 대한 엄청난 건축 변화를 의미합니다. 그러나 연결 문자열을 사용자 (또는 사용자의 컴퓨터)는 사용자 (또는 사용자 컴퓨터)에게 암호화 된 또는 해독 된 양식으로 사용할 수 없는지 확인하는 것입니다.

사용자 시스템에 연결 문자열을 넣으면 암호화 된 상태에서도 동일한 기계를 암호화 된 연결 문자열을 암호화 할 수있는 능력을 제공해야하며 체인에 약한 링크가 있습니다. 풍부한 사용자에게) 일반 텍스트 연결 문자열을 결정할 수 있습니다. 암호화 된 연결 문자열의 암호 해독을 다른 (보안) 기계로 오프로드 할 수 있지만, 이는 보안 상태 (해독 키, 연결 문자열 등)가 수행되는 이전에 언급 된 클라이언트 서버 메커니즘의 변형 일뿐입니다. 자신의 안전한 제어하에 다른 기계에서.

다른 팁

연결 문자열을 보호 할 수 없습니다. 당신이 할 수있는 것은 SSL Secure 채널을 통해 연결하는 것입니다.

MSDN 의이 페이지는 연결을 위해 SSL을 구현하는 방법에 대해 설명합니다.

http://support.microsoft.com/kb/316898

그리고 이것은 SQL 인증 (ASP.NET의 경우)을 설명합니다.

http://msdn.microsoft.com/en-us/library/ff648340.aspx

사용자 이름과 비밀번호를 실제로 암호화하기 만하면됩니다. 이 경우 Windows 인증은 옵션이어야합니다 (비록 종종 나를 위해 일하는 데 문제가 있지만)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top