2009-07-02 2 views
4

내 winforms 응용 프로그램에서 로컬 문자열 연결 문자열을 해시입니다.가운데에서 사람으로부터 연결 문자열 보호

하지만 여기 몇 가지 질문이 있습니다.

내 앱이 연결 문자열을 암호 해독 한 후 연결 문자열 정보가 일반 텍스트로 전송됩니까? 내 응용 프로그램이 로컬에 설치 되었기 때문에 중간에있는 사람은 어떤 사용자 일 수 있습니까?

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

+0

앱이 해시를 해독 할 수 있습니까? – yfeldblum

답변

7

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

하나의 옵션으로, 연결 문자열이 web.config 또는 app.config 파일 (각각 웹용 및 Windows 용)에 저장되어있는 경우 값을 암호화 할 수 있습니다. 물론

Encrypting Web.Config Values in ASP.NET 2.0

Encrypt Connection Strings in VS 2005 .config Files

당신이 아주 바르게 말한대로,이 때문에 응용 프로그램이 할 수있다, 당신이 원하는 보안을 달성 할 수 있습니다 : 여기에 디테일이 수행 할 수있는 방법을하는 것이 링크가 몇이야 사용자 컴퓨터에서 잘 실행되기 때문에 app.config 파일 (암호화 된 상태에서도) 및 관련 암호화/암호 해독 키가 사용자 시스템에서 사용 가능하게됩니다. 지식 있고 진취적인 사용자는 "일반 텍스트"연결 문자열에 액세스 할 수 있습니다.

IMHO는 사용자가 데이터베이스 연결 문자열을 보지 못하게하는 가장 좋은 방법 중 하나는 암호화되지 않았거나 암호화되지 않은 상태로 데이터베이스에 연결 문자열을 제공하지 않는 것입니다. 이것은 윈도우 폼 애플리케이션이 데이터베이스에 직접 연결 문자열을 사용하지 않고 웹 서비스와 직접 대화 할 것을 요구합니다.

물론 웹 서비스에 액세스 할 수있는 Windows 양식 응용 프로그램의 URL을 지정하지만이 웹 서비스의 사용은 사용자 별 사용자 이름/암호 조합으로 만 액세스 할 수 있도록 제한되고 제어됩니다 .

이 방법, 당신은 웹 서비스를 호스팅 할 수 있습니다 (수없는 web service - 당신의 창 형태의 응용 프로그램이 .NET remoting 이상 또는 WCF와 통신 할 원격 응용 프로그램 수) 물리적으로 별도의 서버/컴퓨터에를 그 당신 doperimeter security으로이 기계를 완전히 통제하고 보호합니다.

이 보안 컴퓨터에서 실행중인 응용 프로그램과 서비스가 데이터베이스의 연결 문자열에 액세스 할 수 있으며이 연결 문자열을이 컴퓨터의 경계 외부로 누설하지 않아도되므로 완전히 안전합니다 전술 한 주변 보안이 제 위치에 있고 효과적이라고 가정 할 때).

물론이 모든 것을 구현하는 것은 응용 프로그램의 크기와 특성에 따라 응용 프로그램에 대한 거대한 구조적 변경을 의미 할 수 있습니다. 그러나 응용 프로그램의 실제 크기를 보호 할 수있는 유일한 방법은 가치가있을 수도 있고 그렇지 않을 수도 있습니다. 사용자 (또는 사용자 컴퓨터)의 연결 문자열은 사용자 (또는 사용자의 컴퓨터)에서 암호화 된 형식이나 암호 해독 된 형식으로 사용할 수 없도록하는 것입니다.

사용자 컴퓨터에 연결 문자열을 입력하면 암호화 된 상태에서도 해당 컴퓨터에 암호화 된 연결 문자열을 해독 할 수있는 권한을 부여해야하며 체인과 연결에 약한 링크가 있어야합니다. (평범한 사용자에게) 평문 연결 문자열을 결정할 수있는 지점. 암호화 된 연결 문자열의 해독을 다른 (보안) 컴퓨터로 오프로드 할 수는 있지만 보안이 유지되는 부분 (해독 키, 연결 문자열 등)이 수행되는 앞서 언급 한 클라이언트 - 서버 메커니즘의 변형 일뿐입니다 자신의 보안 제어하에있는 다른 컴퓨터에서

+0

"하지만이 웹 서비스의 사용은 사용자 별 사용자 이름/암호 조합만으로 액세스를 허용하여 제한되고 제어됩니다."... 닭고기 및 달걀 문제는 아닙니까? ... 이제 사용자 이름을 숨길 필요가 있습니다/password – BlackTigerX

+0

@BlackTigerX - 네가 무슨 말하는지 알 겠어. 웹 서비스와 함께 사용할 사용자 이름/암호 콤보를 응용 프로그램에서 하드 코딩해야 할 이유가 없습니다. 연결 문자열은 어딘가에 있어야합니다. 사용자가 런타임시 제공해야하는 자격 증명 (예 : Windows에 로그온하는 것과 같은) 인 수동 인증 메커니즘에 묶일 수 있습니다. – CraigTP

4

연결 문자열을 보호 할 수 없습니다. SSL 보안 채널을 통해 연결할 수 있습니다.

0

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

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

그리고이 하나 (ASP.NET의 경우) SQL 인증에 대해 설명

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

그것을 당신은 정말로 사용자 이름과 암호를 암호화 할 필요가있는 것 같습니다. 어떤 경우에는 Windows 인증이 필요합니다. (종종 저에게 잘 작동하도록하는 데 문제가 있습니다.)