다음을 통해 공유


ADO 보안 디자인 기능

다음 섹션에서는 ADO(ActiveX Data Objects) 2.8 이상에서 보안 디자인 기능에 대해 설명합니다. 이러한 변경 내용은 보안을 개선하기 위해 ADO 2.8에서 이루어졌습니다. Windows Vista의 Windows DAC 6.0에 포함된 ADO 6.0은 Windows XP 및 Windows Server 2003의 MDAC 2.8에 포함된 ADO 2.8과 기능적으로 동일합니다. 이 항목에서는 ADO 2.8 이상에서 애플리케이션을 가장 안전하게 보호하는 방법에 대한 정보를 제공합니다.

중요하다

이전 버전의 ADO에서 애플리케이션을 업데이트하는 경우 고객에게 배포하기 전에 비프로덕션 컴퓨터에서 업데이트된 애플리케이션을 테스트하는 것이 좋습니다. 이렇게 하면 업데이트된 애플리케이션을 배포하기 전에 호환성 문제를 알고 있는지 확인할 수 있습니다.

Internet Explorer 파일 액세스 시나리오

다음 기능은 ADO 2.8 이상이 Internet Explorer의 스크립트된 웹 페이지에서 사용될 때 작동하는 방식에 영향을 줍니다.

이제 사용자에게 경고하는 데 사용되는 수정되고 향상된 보안 경고 메시지 상자

ADO 2.7 이하의 경우 스크립트된 웹 페이지가 신뢰할 수 없는 공급자에서 ADO 코드를 실행하려고 할 때 다음과 같은 경고 메시지가 표시됩니다.

This page accesses data on another domain. Do you want to allow this? To
avoid this message in Internet Explorer, you can add a secure Web site to
your Trusted Sites zone on the Security tab of the Internet Options dialog
box.

ADO 2.8 이상에서는 이전 메시지가 더 이상 표시되지 않습니다. 대신 다음 메시지가 이 컨텍스트에 표시됩니다.

This Website uses a data provider that may be unsafe. If you trust the
Website, click OK, otherwise click Cancel.

위의 메시지를 통해 사용자는 다음 중 하나의 선택에 대한 결과를 알면서 정보에 입각한 결정을 내릴 수 있습니다.

  • 사용자가 사이트를 신뢰하는 경우 확인을 클릭하면 모든 디스크 안전 코드(이 항목의 뒷부분에 설명된 디스크 액세스 가능 API를 제외한 모든 ADO 메서드 및 속성)가 브라우저 창에서 실행되고 실행될 수 있습니다.

  • 사용자가 사이트를 신뢰하지 않는 경우 취소를 클릭하면 데이터 액세스용 ADO 코드가 전혀 실행되지 않습니다.

이제 디스크 액세스 가능 코드가 신뢰할 수 있는 사이트로 제한됨

ADO 2.8에서는 특히 제한된 API 집합의 기능을 제한하여 로컬 컴퓨터의 파일에서 읽거나 쓸 수 있는 가능성을 노출하는 추가 디자인이 변경되었습니다. 다음은 Internet Explorer를 실행할 때 안전을 위해 추가로 제한된 API 메서드입니다.

이러한 제한된 디스크 액세스 가능 함수 집합의 경우 이러한 메서드를 사용하는 코드가 Internet Explorer에서 실행되는 경우 ADO 2.8 이상에서 다음 동작이 발생합니다.

  • 코드를 제공한 사이트가 이전에 신뢰할 수 있는 사이트 영역 목록에 추가된 경우 코드가 브라우저에서 실행되고 로컬 파일에 대한 액세스 권한이 부여됩니다.

  • 사이트가 신뢰할 수 있는 사이트 영역 목록에 표시되지 않으면 코드가 차단되고 로컬 파일에 대한 액세스가 거부됩니다.

    메모

    ADO 2.8 이상에서는 사용자에게 신뢰할 수 있는 사이트 영역 목록에 사이트를 추가하라는 알림을 받거나 권장되지 않습니다. 따라서 신뢰할 수 있는 사이트 목록의 관리는 로컬 파일 시스템에 액세스해야 하는 웹 사이트 기반 애플리케이션을 배포하거나 지원하는 사람들의 책임입니다.

Recordset 개체의 ActiveCommand 속성에 대한 액세스 차단

Internet Explorer에서 실행하는 경우 ADO 2.8은 이제 활성 Recordset 개체에 대한 ActiveCommand 속성에 대한 액세스를 차단하고 오류를 반환합니다. 이 오류는 신뢰할 수 있는 사이트 목록에 등록된 웹 사이트에서 페이지를 가져오는지 여부에 관계없이 발생합니다.

OLE DB 공급자 및 통합 보안에 대한 처리 변경 내용

잠재적인 보안 문제 및 문제에 대한 ADO 2.7 및 이전 버전을 검토하는 동안 다음 시나리오가 발견되었습니다.

경우에 따라 통합 보안 DBPROP_AUTH_INTEGRATED 속성을 지원하는 OLE DB 공급자는 잠재적으로 스크립티드된 웹 페이지에서 사용자의 현재 로그인 자격 증명을 사용하여 의도치 않게 다른 서버에 연결하도록 ADO 연결 개체를 다시 사용하도록 허용할 수 있습니다. 이를 방지하기 위해 ADO 2.8 이상에서는 통합 보안을 위해 제공하거나 제공하지 않도록 선택한 방법에 따라 OLE DB 공급자를 처리합니다.

신뢰할 수 있는 사이트 영역 목록에 나열된 사이트에서 로드되는 웹 페이지의 경우 다음 표에서는 ADO 2.8 이상에서 각 경우에 ADO 연결을 관리하는 방법에 대한 분석을 제공합니다.

사용자 인증, 로그온에 대한 IE 설정 공급자가 "통합 보안"을 지원하고 UID 및 PWD가 지정됨(SQLOLEDB) 공급자는 "통합 보안"(JOLT, MSDASQL, MSPersist)을 지원하지 않습니다. 공급자는 "통합 보안"을 지원하며 SSPI로 설정됩니다(UID/PWD가 지정되지 않음).
현재 사용자 이름 및 암호를 사용하여 자동 로그온 연결 허용 연결 허용 연결 허용
사용자 이름 및 암호 확인 연결 허용 연결 실패 연결 실패
인트라넷 영역에서만 자동 로그온 연결 허용 사용자에게 보안 경고 메시지 표시 사용자에게 보안 경고 메시지 표시
익명 로그온 연결 허용 연결 실패 연결 실패

이제 보안 경고가 표시되는 경우 메시지 상자에서 사용자에게 다음을 알릴 수 있습니다.

This Website is using your identity to access a data source. If you trust this Website, click OK, otherwise click Cancel.

위의 메시지를 통해 사용자는 보다 합리적인 결정을 내리고 그에 따라 진행할 수 있습니다.

메모

신뢰할 수 없는 사이트(즉, 신뢰할 수 있는 사이트 영역 목록에 나열되지 않은 사이트)의 경우 공급자가 신뢰할 수 없는 경우(이 섹션의 앞부분에서 설명한 대로) 사용자는 두 개의 보안 경고, 안전하지 않은 공급자에 대한 경고, ID 사용 시도에 대한 두 번째 경고가 연속으로 표시될 수 있습니다. 사용자가 첫 번째 경고까지 확인을 클릭하면 앞의 표에 설명된 Internet Explorer 설정 및 응답 동작 코드가 실행됩니다.

ADO 연결 문자열에서 암호 텍스트가 반환되는지 여부 제어

ADO Connection 개체에서 ConnectionString 속성 값을 가져올 때 다음 이벤트가 발생합니다.

  1. 연결이 열려 있는 경우 연결 문자열을 가져오기 위해 기본 OLE DB 공급자에 대한 초기화 호출이 이루어집니다.

  2. DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO 속성의 OLE DB 공급자의 설정에 따라 암호가 반환되는 다른 연결 문자열 정보와 함께 포함됩니다.

예를 들어 ADO 연결 동적 속성 보안 정보 유지 true 설정되면 반환된 연결 문자열에 암호 정보가 포함됩니다. 그렇지 않은 경우 기본 공급자가 속성을 false 설정하면(예: SQLOLEDB 공급자 사용) 반환된 연결 문자열에서 암호 정보가 생략됩니다.

타사(즉, 타사) OLE DB 공급자를 ADO 애플리케이션 코드와 함께 사용하는 경우 DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO 속성이 구현되는 방식을 확인하여 ADO 연결 문자열에 암호 정보를 포함할 수 있는지 여부를 확인할 수 있습니다.

레코드 집합 또는 스트림을 로드하고 저장할 때 파일이 아닌 디바이스 확인

ADO 2.7 이전 버전의 경우 파일 기반 데이터를 읽고 쓰는 데 사용된 열기저장 같은 파일 입력/출력 작업은 경우에 따라 디스크 기반이 아닌 파일 형식을 지정한 URL 또는 파일 이름을 사용할 수 있습니다. 예를 들어 LPT1, COM2, PRN.TXT, AUX는 특정을 사용하여 시스템의 프린터와 보조 디바이스 간의 입력/출력에 대한 별칭으로 사용될 수 있습니다.

ADO 2.8 이상에서는 이 기능이 업데이트되었습니다. RecordsetStream 개체를 열고 저장하기 위해 이제 ADO는 URL 또는 파일 이름에 지정된 입력 또는 출력 디바이스가 실제 파일인지 확인하기 위해 파일 형식 검사를 수행합니다.

메모

이 섹션에 설명된 대로 파일 형식 검사는 Windows 2000 이상에만 적용됩니다. ADO 2.8 이상이 Windows 98과 같은 이전 Windows 릴리스에서 실행되는 경우에는 적용되지 않습니다.