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 이상에서 애플리케이션을 가장 안전하게 보호하는 방법에 대한 정보를 제공합니다.

Important

이전 버전의 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 Connection 동적 속성 Persist Security InfoTrue로 설정된 경우 반환된 연결 문자열에 암호 정보가 포함됩니다. 그렇지 않으면 기본 공급자가 속성을 False로 설정한 경우(예: SQLOLEDB 공급자 사용) 반환된 연결 문자열에서 암호 정보가 생략됩니다.

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

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

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

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

참고 항목

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