Office 솔루션에 대한 특정 보안 고려 사항
Microsoft .NET Framework와 Microsoft Office에서 제공하는 보안 기능을 사용하면 잠재적인 보안 위협으로부터 Office 솔루션을 보호할 수 있습니다.이 항목에서는 이 중 몇 가지 위협에 대해 설명하고 이들로부터 보호하기 위한 몇 가지 권장 사항을 제시합니다.Microsoft Office 보안 설정이 Office 솔루션에 어떤 식으로 영향을 주는지에 대해서도 설명합니다.
적용 대상: 이 항목의 정보는 Office 2013 및 Office 2010의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
신뢰되는 코드가 악의적인 다른 문서에서 다른 용도로 사용된다
공격자 입사, 개인 정보를 다운로드 한 특정 목적을 위해 예를 들어, 의미 하는 신뢰할 수 있는 코드를 사용 하 고 워크시트 같은 다른 문서에서 다시 사용할 수 있습니다.코드는 원래 문서가 실행 되 고 있지 및 개인 정보가 노출 되거나 더 높은 권한으로 코드를 실행 하 고 다른 사용자가 열 때와 같은 기타 위협 요소를 열 수 있습니다 알지 못합니다.또는 공격자가 워크시트의 데이터를 간단히 수정하여 이 데이터가 공격 대상에 전달될 때 예기치 않은 방식으로 작동하도록 만들 수 있습니다.악의적인 사용자는 코드에 연결된 워크시트의 값, 수식 또는 표시 특성을 바꿈으로써 변경된 파일을 전달하여 다른 사용자를 공격할 수 있습니다.워크시트의 값을 수정함으로써 특정 정보를 볼 권한이 없는 사용자가 그러한 정보에 액세스하게 되는 문제가 생길 수도 있습니다.
실행에 필요한 충분한 증명이 어셈블리 위치와 문서 위치 모두에 있어야 하므로 이러한 공격을 수행하기는 쉽지 않습니다.예를 들어, 전자 메일에 첨부된 문서 또는 신뢰되지 않는 인트라넷 서버에 있는 문서에는 실행을 위한 충분한 권한이 없습니다.
이러한 공격이 가능하려면 신뢰할 수 없는 데이터를 기반으로 결정을 내릴 수 있도록 코드 자체가 작성되어야 합니다.예제에서는 데이터베이스 서버 이름을 포함하는 숨김 셀이 있는 워크시트를 만듭니다.사용자는 워크시트를 ASPX 페이지에 제출하여 SQL 인증과 하드 코드된 SA 암호를 사용하여 해당 서버에 연결하려고 시도합니다.공격자는 숨김 셀의 내용을 다른 컴퓨터 이름으로 바꾼 다음 SA 암호를 가져올 수 있습니다.이 문제를 방지하려면 암호를 하드 코드로 작성하지 마십시오. 서버에 액세스하기 전에 알려진 내부 서버 목록에 대해 서버 ID를 확인합니다.
권장 사항
사용자, 문서, 데이터베이스, 웹 서비스 또는 기타 소스에서 가져온 입력 내용과 데이터에 항상 확인 합니다.
특별한 유형의 기능이 노출되는 경우를 주의하십시오. 예를 들어 특정한 권한을 필요로 하는 데이터를 허가된 사용자 대신 액세스하여 보호되지 않은 워크시트에 입력할 수 있습니다.
응용 프로그램의 종류에 따라이 임의의 코드를 실행 하기 전에 원래의 문서가 실행 중인지 확인 하는 것이 수 있습니다.예를 들어, 알려진, 안전한 위치에 저장 된 문서에서 실행 되 고 확인 하십시오.
응용 프로그램에서 권한이 부여된 작업을 수행하려는 경우 문서가 열려 있으면 경고를 표시하도록 만드는 것도 좋은 방법입니다.예를 들어, 응용 프로그램에서 개인 정보에 액세스할 것이라는 메시지가 표시되는 시작 화면 또는 시작 대화 상자를 만들어 사용자가 작업을 계속할 것인지 또는 취소할 것인지 선택하도록 할 수 있습니다.정상적인 것처럼 보이는 문서를 사용하려고 할 때 이러한 경고가 발생하면 최종 사용자는 위험에 노출되기 전에 응용 프로그램을 종료할 수 있습니다.
코드가 Outlook 개체 모델 가드에 의해 차단된다
Microsoft Office에서는 코드에서 개체 모델의 특정 속성, 메서드 및 개체를 사용할 수 없도록 제한될 수 있습니다.Outlook에서 이러한 개체에 대한 액세스를 제한하여 전자 메일 웜과 바이러스가 악의적인 목적으로 개체 모델을 사용하지 못하도록 할 수 있습니다.이 보안 기능을 Outlook 개체 모델 가드라고 합니다.개체 모델 가드가 활성화된 상태에서 추가 기능이 제한된 속성이나 메서드를 사용하려고 시도하면 Outlook에서는 사용자가 작업을 중지하거나 제한된 시간 동안 속성이나 메서드에 대한 액세스를 허용할 수 있도록 보안 경고를 표시합니다.Visual Studio Office 솔루션을 사용 하 여 만든 Outlook 추가 기능의 사용자가 작업을 중지 하는 경우 throw 됩니다을 COMException.
개체 모델 가드는 Outlook을 Microsoft Exchange Server와 함께 사용하는지에 따라 여러 가지 방식으로 추가 기능에 영향을 줄 수 있습니다.
Outlook을 Exchange와 함께 사용하지 않을 경우 관리자는 컴퓨터의 모든 추가 기능에 대해 개체 모델 가드를 활성화하거나 비활성화할 수 있습니다.
Outlook을 Exchange와 함께 사용할 경우 관리자는 컴퓨터의 모든 추가 기능에 대해 개체 모델 가드를 활성화/비활성화하거나, 특정 추가 기능이 개체 모델 가드를 만나지 않고 실행될 수 있도록 지정할 수 있습니다.관리자는 개체 모델의 특정 영역에 대해 개체 모델 가드의 동작을 수정할 수도 있습니다.예를 들어, 관리자는 개체 모델 가드가 활성화되어 있더라도 자동으로 추가 기능이 프로그래밍 방식으로 전자 메일을 보내도록 할 수 있습니다.
Outlook 2007에서 부터는 개체 모델 가드의 동작을 Outlook 보안을 유지 하면서 개발자와 사용자 경험을 향상 시키기 위해 변경 되었습니다.자세한 내용은 Code Security Changes in Outlook 2007을 참조하십시오.
개체 모델 가드 경고 최소화
제한된 속성과 메서드를 사용할 때 보안 경고가 표시되지 않도록 하려면 추가 기능이 프로젝트 ThisAddIn 클래스의 Application 필드에서 Outlook 개체를 가져오도록 설정합니다.이 필드에 대한 자세한 내용은 응용 프로그램 수준 추가 기능 프로그래밍을 참조하십시오.
이 개체에서 가져온 Outlook 개체만 개체 모델 가드에서 신뢰할 수 있습니다.이와 반대로 새 Microsoft.Office.Interop.Outlook.Application 개체에서 가져온 개체는 신뢰되지 않으며, 개체 모델 가드가 활성화된 경우 제한된 속성과 메서드를 사용하면 보안 경고가 발생합니다.
다음 코드 예제에서는 개체 모델 가드가 활성화된 경우 보안 경고를 표시합니다.Microsoft.Office.Interop.Outlook.MailItem 클래스의 To 속성은 개체 모델 가드에 의해 제한됩니다.이 코드에서는 Microsoft.Office.Interop.Outlook.MailItem 개체를 Application 필드에서 가져오는 대신 new 연산자를 사용하여 만들어지는 Microsoft.Office.Interop.Outlook.Application에서 가져오므로 해당 개체가 신뢰되지 않습니다.
Private Sub UntrustedCode()
Dim application As New Microsoft.Office.Interop.Outlook.Application
Dim mailItem1 As Microsoft.Office.Interop.Outlook.MailItem = _
TryCast(application.CreateItem( _
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem), _
Microsoft.Office.Interop.Outlook.MailItem)
mailItem1.To = "someone@example.com"
MessageBox.Show(mailItem1.To)
End Sub
private void UntrustedCode()
{
Microsoft.Office.Interop.Outlook.Application application =
new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
application.CreateItem(
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
Microsoft.Office.Interop.Outlook.MailItem;
mailItem1.To = "someone@example.com";
MessageBox.Show(mailItem1.To);
}
다음 코드 예제에서는 개체 모델 가드에서 신뢰되는 Microsoft.Office.Interop.Outlook.MailItem 개체의 제한된 To 속성을 사용하는 방법을 보여 줍니다.이 코드에서는 신뢰되는 Application 필드를 사용하여 Microsoft.Office.Interop.Outlook.MailItem을 가져옵니다.
Private Sub TrustedCode()
Dim mailItem1 As Microsoft.Office.Interop.Outlook.MailItem = _
TryCast(Me.Application.CreateItem( _
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem), _
Microsoft.Office.Interop.Outlook.MailItem)
mailItem1.To = "someone@example.com"
MessageBox.Show(mailItem1.To)
End Sub
private void TrustedCode()
{
Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
this.Application.CreateItem(
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
Microsoft.Office.Interop.Outlook.MailItem;
mailItem1.To = "someone@example.com";
MessageBox.Show(mailItem1.To);
}
[!참고]
Outlook을 Exchange와 함께 사용하는 경우 모든 Outlook 개체를 ThisAddIn.Application에서 가져오더라도 추가 기능에서 전체 Outlook 개체 모델에 액세스할 수 있다고 보장할 수 없습니다.예를 들어 Exchange 관리자가 Outlook 개체 모델을 사용하여 주소 정보에 액세스하려는 모든 시도를 자동으로 거부하도록 설정하는 경우 이전 코드 예제에서는 신뢰되는 ThisAddIn.Application 필드를 사용하더라도 To 속성에 액세스할 수 없습니다.
Exchange 사용 시 신뢰할 추가 기능 지정
Outlook을 Exchange와 함께 사용할 경우 관리자는 특정 추가 기능이 개체 모델 가드를 만나지 않고 실행될 수 있도록 지정할 수 있습니다.Visual Studio Office 솔루션을 사용 하 여 만들어진 outlook 추가 기능은 개별적으로 신뢰할 수 없습니다. 만 그룹으로 신뢰할 수 있습니다.
Outlook에서는 추가 기능의 진입점 DLL 해시 코드를 기반으로 추가 기능을 신뢰합니다.Microsoft Visual Studio Tools for Office Runtime을 대상으로 하는 모든 Outlook 추가 기능은 동일한 진입점 DLL(VSTOLoader.dll)을 사용합니다.즉, 관리자가 개체 모델 가드를 만나지 않고 실행되도록 Microsoft Visual Studio Tools for Office Runtime을 대상으로 하는 추가 기능을 신뢰하면 Microsoft Visual Studio Tools for Office Runtime을 대상으로 하는 다른 모든 추가 기능도 신뢰됩니다.개체 모델 가드를 만나지 않고 실행되도록 특정 추가 기능을 신뢰하는 방법에 대한 자세한 내용은 Outlook에서 바이러스 예방 기능을 관리하는 데 사용되는 방법 지정을 참조하십시오.
권한 변경이 즉시 적용되지 않는다
관리자가 문서 또는 어셈블리에 대한 권한을 조정한 경우 변경 사항이 적용되려면 사용자가 모든 Office 응용 프로그램을 종료한 다음 다시 시작해야 합니다.
Microsoft Office 응용 프로그램을 호스팅하는 다른 응용 프로그램으로 인해 새로운 권한이 적용되지 않을 수도 있습니다.보안 정책이 변경되면 사용자는 Office를 사용하는 호스팅 또는 독립 실행형 응용 프로그램을 모두 종료해야 합니다.
Microsoft Office System의 보안 센터 설정은 추가 기능 또는 문서 수준 사용자 지정에 영향을 주지 않는다
사용자는 보안 센터에서 옵션을 설정하여 추가 기능이 로드되지 않게 할 수 있습니다.그러나 Visual Studio Office 솔루션을 사용 하 여 만든 문서 수준 사용자 지정과 응용 프로그램 수준 추가 기능 이러한 신뢰 설정이 적용 되지 않습니다.
사용자가 보안 센터를 사용하여 추가 기능이 로드되지 않게 하면 다음과 같은 형식의 추가 기능이 로드되지 않습니다.
관리되는 COM 추가 기능 및 관리되지 않는 COM 추가 기능
관리되는 스마트 문서 및 관리되지 않는 스마트 문서
관리되는 자동화 추가 기능 및 관리되지 않는 자동화 추가 기능
관리되는 실시간 데이터 구성 요소 및 관리되지 않는 실시간 데이터 구성 요소
다음 절차에서는 사용자가 사용 하는 방법을 설명의 보안 센터 로드 Microsoft에서 추가 기능을 제한 하려면 Office 2013 및 Microsoft Office 2010.이러한 프로시저 Visual Studio Office 개발 도구를 사용 하 여 만든 사용자 지정 또는 추가 기능이 영향을 주지 않습니다.
Microsoft Office 2010 및 Microsoft에서 추가 기능을 사용 하지 않으려면 Office 2013 응용 프로그램
선택 된 파일 탭입니다.
선택 된 ApplicationName 옵션 단추입니다.
범주 창에서 선택 보안 센터.
세부 정보 창에서 선택한 보안 센터 설정.
범주 창에서 선택 추가 기능.
세부 정보 창에서 응용 프로그램 추가 기능에 신뢰할 수 있는 게시자의 서명 필요 또는 모든 응용 프로그램 추가 기능 사용 안 함을 선택합니다.