2016-09-08 5 views
3

나는 데이터베이스에 연결 날씬한 ORM과 함께 다음과 같은 코드를 사용하고 있습니다 :SqlConnection()을 사용하여 데이터베이스에 연결하고 연결 문자열을 안전하게 보호합니까?

using (IDbConnection db = new SqlConnection(ConnectionString())) 
{ 
return db.Query<object>(Sql).ToList(); 
} 

연결 문자열은 데이터베이스 이름을 포함하고 로그인 정보를. 해당 정보가 다른 사람에게 표시 될 수 있다면 데이터베이스 서버에 연결하는 동안 궁금합니다.

답변

0

이것은 연결이 설정되는 위치와 연결이 설정된 위치에 따라 달라집니다.

예를 들어 분산 클라이언트에서 한쪽 끝이 누군가의 손에 들어가면 연결 세부 정보를 얻을 수 있습니다. 그러나 일반적으로 웹 서버에서 데이터베이스에 이르기까지 "장면 뒤에"연결이 설정됩니다. 이처럼 구축 된 연결은 모두 "서버 측"이므로 응용 프로그램의 "클라이언트"는 연결 문자열을 볼 수 없으므로 일반적으로 안전하다고 인식됩니다. 물론 인프라 스트럭처가 여전히 유용합니다! :)

도메인에서 실행되는 씩 (thick) 클라이언트와 같은 것이면 Windows 자격 증명과 같은 것을 사용하면 계정만큼 안전합니다.

+0

감사합니다. –

1

당신은 운송을 의미하는 경우 : 당신이 암호화 된 연결을 사용하는 SQL 서버를 강제 할 수 - 그들은 다른 코드를 하찮게 사용할 수 없습니다 있도록 핵심 부품은 기본적으로 제거 - 당신이 프로세스 의미하는 경우 https://technet.microsoft.com/en-us/library/ms189067(v=sql.105).aspx

SqlConnection 인스턴스와 함께; 이것은 SqlConnection의 connection-string에있는 "Persist Security Info"매개 변수와 관련이 있으며 기본값은 false입니다. 기본적으로 제공된 .ConnectionString 속성은 제공된 자격 증명을 노출하지 않습니다. string은 어느 시점에서 여전히 메모리에 존재하므로 프로세스 및 메모리 분석 도구에 대한 원시 액세스 권한을 가진 사람은 여전히이를 얻을 수 있습니다. https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.110).aspx

그러나 SSPI를 통한 Windows 인증을 사용할 수도 있습니다.이 경우 SSID를 사용하여 app-domain의 실행중인 사용자 ID 정보를 사용하여 연결합니다. 위와 같은 링크이지만 "통합 보안"연결 문자열 매개 변수를 참조하십시오.

로컬 컴퓨터에
+0

감사합니다. 유익했습니다. –

0

: 네, 정보 네트워크 DB 연결을 통해

에 대한 액세스를 얻을 수있을 것입니다 : DB에 따라 다름는, SQL 서버가 SSL을 지원하지만 당신은 당신이 그 다음 사용하지 않는 경우 귀하의 교통 정보가 노출 될 수 있습니다.

+0

감사합니다. 유익했습니다. –