2010-05-26 6 views
6

현재 SQL Server DB 백엔드가있는 C# 응용 프로그램을 개발 중입니다. 나는 배포 시점에 접근하고 있으며 문제에 직면하고 있습니다. 응용 프로그램은 활성 디렉토리 네트워크 내에 배치됩니다. SQL 인증에 관한 한, Windows 인증 또는 서버 인증과 같은 두 가지 옵션이 있다는 것을 이해합니다.C# 및 SQL Server 인증

서버 인증을 사용하는 경우 계정의 사용자 이름과 암호가 app.config 파일에 일반 텍스트로 저장되므로 데이터베이스가 취약해질 수 있습니다.

Windows Authenticaiton을 사용하면이 문제를 피할 수 있지만 응용 프로그램을 올바르게 실행하려면 조직 내 모든 직원에게 데이터베이스에 대한 읽기/쓰기 액세스 권한을 부여해야합니다. 이 과정이 정상이지만 다른 수단을 통해 데이터베이스에 쉽게 연결하고 앱 외부의 데이터를 직접 변경할 수도 있음을 의미합니다.

나는 여기에 실종 된 것 같아 보이지만, 저녁에는 아무 소용이 없다. 어떤 조언이나지도가 많이 감사 할 것입니다!

피터


추가 - 내 프로젝트는 Windows Form에 ASP.NET하지 기반으로 - 여전히 app.config 파일 정답을 암호화한다? 그렇다면 누구나 ASP.NET 기반이 아닌 예제를 가지고 있습니까?

당신은 설정 파일에 사용자 이름과 암호를 암호화 할 수 있습니다
+0

이 응용 프로그램이 winforms입니까? –

+0

예 그것은 winforms 응용 프로그램입니다 – Peter

+1

보호를 위해 app.config (web.config 아님) 파일을 암호화하는 방법에 대한 일반적인 .NET 샘플에 대한 내 대답이 업데이트되었습니다. –

답변

3

경우,의 Web.config의 사용자 이름과 암호를 저장하는 것입니다 나는 서버 인증을 사용하고 있는데, 나는 사용자 이름이 이고 계정의 암호가 일 것이라는 점을 염두에두고 을 app.config에 일반 텍스트로 저장했다. 파일이므로 데이터베이스 은 취약한 상태로 둡니다.

언제든지 app.config 및 encrypt that connection string section에 연결 문자열을 만들 수 있습니다. 이것은 ASP.NET뿐만 아니라 콘솔 애플 리케이션, Winforms 애플 리케이션, WPF 애플 리케이션 - 그것은 .NET 기반 기술입니다.

이 작업을 수행하는 방법에 대한 비 -ASP.NET 샘플은 Jon Galloway의 Encryping Passwords in a .NET app.config을 참조하십시오.

이 문제를 방지 할 윈도우 인증 스펙을 사용하여, 그러나 그것은 는/우리 조직 읽기 내에서 직원 의 모든 구성원을 제공하는 의미를 올바르게 에게 응용 프로그램을 실행하기 위해 데이터베이스에 쓰기 권한을 것입니다.

예 -하지만 당신은 부담을 완화 할 수 있습니다

  • 은 Windows/AD 그룹을 인증 할 수 있습니다 - 해당 그룹의 구성원 인 모든 사람이 접근이 - 필요가 개별적으로 각 사용자 권한 없음을

  • 데이터 검색을 위해 뷰를 사용하고 삽입/업데이트/삭제를 위해 저장된 procs를 사용하는 경우 해당 사용자에게 직접 테이블 액세스를 제공 할 필요가 없으며 부적절한 조작으로부터 데이터베이스를 보호 할 필요가 없습니다.

0

가장 쉬운 옵션은 encrypt them

+0

내가 읽고있는 대부분의 기사는 웹 프로젝트 (ASP.NET)에 암호화를 사용하는 것으로 보이지만 내 프로젝트는 Windows 형식입니다. 같은 원칙을 적용 할 수 있습니까? 아니면 내가 볼 필요가있는 다른 것이 있습니까? – Peter

+0

@Peter Greenall : 모든 .NET 응용 프로그램에서 작동합니다. 콘솔 응용 프로그램, Winforms, ASP.NET에 사용했습니다. ** 대부분의 샘플이 ASP.NET 임에도 불구하고 ** ASP.NET으로 제한되지 않습니다 ** –

0

언제든지 app.config에서 데이터를 암호화 할 수 있습니다.

link에 대한 자세한 정보가 있습니다.