[펌] 인터넷 익스플로러의 보안 설정 변경 관련…….

인터넷 익스플로러의 보안 설정 변경 관련.



1. 신뢰할수 있는 사이트 추가.


2. 구역별 보안등급 변경.


3. 임의의 선택한 보안 수준 변경.




1. 신뢰할수 있는 사이트 추가. &  2. 구역별 보안등급 변경.



 HRESULT hr;
 IInternetSecurityManager * pSecurityMgr;
 IInternetZoneManager * pZoneMgr;
 DWORD dwEnum, dwZoneCount;
 DWORD dwZone;
 ZONEATTRIBUTES zoneAttr;
 int nLevel = 2;
 
 CoInitialize(NULL);



 // 먼저 IinternetSecurityManager 인터페이스를 초기화한다.
 hr = CoCreateInstance(CLSID_InternetSecurityManager, NULL, CLSCTX_ALL, IID_IInternetSecurityManager, (void**)&pSecurityMgr);
 if (hr != S_OK)
 {
       CoUninitialize();
       return;
 }



 // 다음으로 IinternetZoneManager 인터페이스를 초기화한다.
 hr = CoCreateInstance(CLSID_InternetZoneManager, NULL, CLSCTX_ALL, IID_IInternetZoneManager, (void**)&pZoneMgr);
 if (hr != S_OK)
 {
       CoUninitialize();
       return;
 }
 dwEnum = 0;



 // Zone Enumerator를 초기화한다.
 pZoneMgr->CreateZoneEnumerator(&dwEnum, &dwZoneCount, 0);



 // 2번 존에 대한 정보를 얻는다. 2번 존이 신뢰할 수 있는 영역 존이다.
 pZoneMgr->GetZoneAt( dwEnum, nLevel, &dwZone);
 pZoneMgr->GetZoneAttributes(dwZone, &zoneAttr);



 // 지금 예제는 보통의 HTTP 사이트를 등록하는 것이기 때문에 HTTPS만을 등록해야 하는 제약 조건을 없앤다.
 if (zoneAttr.dwFlags &ZAFLAGS_REQUIRE_VERIFICATION)
 {
       // 서버 확인 부분을 뺀다.
       zoneAttr.dwFlags = (zoneAttr.dwFlags & ~(ZAFLAGS_REQUIRE_VERIFICATION));
 }



 // 현재 보안 설정이 낮음이 아니면 낮음으로 설정한다.
 if (zoneAttr.dwTemplateCurrentLevel != 0x10000)
 {
       zoneAttr.dwTemplateCurrentLevel = 0x10000;
       zoneAttr.dwTemplateMinLevel = 0x10000;
 }
 pZoneMgr->SetZoneAttributes(dwZone, &zoneAttr);
 



 // 등록 사이트
 CString strDomain = “http://www.devpia.com“;



 


 // 이 값을 유니코드로 변경한다.
 BSTR bDomain = strDomain.AllocSysString();
 



 // IInternetSecurity 인터페이스의 SetZoneMapping 함수를 이용해 등록한다.
 hr = pSecurityMgr->SetZoneMapping(nLevel, bDomain, SZM_CREATE);



 if (hr == E_ACCESSDENIED)  // 존 설정이 서버 확인을 필요로 하는 곳이면
 {
       ::MessageBox(NULL, “등록하려는 영역이 서버 확인이 필요한 것으로 설정되어 있습니다.”, “영역 추가 에러”, MB_OK);
 }
 else if (hr == ERROR_FILE_EXISTS) // 이미 다른 영역으로 등록된 것이면
 {
       ::MessageBox(NULL, “등록하려는 주소가 이미 다른 영역으로 설정되어 있습니다.”, “영역 추가 에러”, MB_OK);
 }
 



 ::SysFreeString(bDomain);
 



 if (dwEnum != 0)
       pZoneMgr->DestroyZoneEnumerator(dwEnum);
 



 pSecurityMgr->Release();
 pZoneMgr->Release();
 CoUninitialize();



——————————————————————————–


위의 코드는 한기용(Keeyong@wisenut.com)님의 코드를 그대로 인용 하였음.





1,2 의 내용만으로 거의 모든 문제가 해결되리라 생각된다.


그러나 몇몇 보안 관련 부분은 보안 등급을 최소로 해도 문제가 해결되지 않는 경우가 있다.


이 경우엔 직접 원하는 보안관련 설정을 원하는 수준으로 변경 해야만 한다.


대표적인 예가 “안전하지 않은 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립트”이다.


때때로 사소한 ActiveX들이 필요한 경우가 있는데 이런것들을 매번 서명을 받기도 번거로운 일이다.


이러한 문제를 해결하기위해서 보안수준을 변경할 필요가 있다.



이 항목을 직접 변경하는 코드를 살펴보자.





3. 임의의 선택한 보안 수준 변경.


CRegKey reg;     // #include <Atlbase.h>


if(reg.Open(HKEY_LOCAL_MACHINE, “Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2”) == ERROR_SUCCESS)
{
     reg.SetValue((DWORD)0, “1201”);  // 0:허용  1:확인  3:사용안함
     reg.Close();
}


if(reg.Open(HKEY_CURRENT_USER, “Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2”) == ERROR_SUCCESS)
{
     reg.SetValue((DWORD)0, “1201”); 
     reg.Close();
}



———————————————————————-



위의 예제는 [신뢰할수 있는 사이트>안전하지 않은 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립트 => 사용] 으로 레지스트리를 직접 변경하는 코드이다.



그러나, 한기용(Keeyong@wisenut.com)님의 글에서는 레지스트리를 직접 편집하는것은 좋지 않은 방법이라고 설명하고 있다. 그 이유를 다음과 같이 설명하고 있다.


—————————————————————


그 이유는 다음 버전의 IE에서도 레지스트리의 이 항목들을 URL 보안 관련


정보를 저장하는데 사용한다는 보장이 없기 때문이다. 따라서 URL 보안 영역


관련 인터페이스를 사용하는 것이 좋다.


—————————————————————



따라서, 방법의 선택은 독자의 몫이다.




※ Zones > 2 는 신뢰할수 있는 사이트를 나타낸다.


Zone 0 (My computer 영역을 의미)
Zone 1 (Local intranet 영역을 의미)
Zone 2 (trusted sites 영역을 의미)
Zone 3 (Internet 영역을 의미)
Zone 4 (Restricted sites 영역을 의미)
 


※ 똑같은 내용이 hkey_local_machine과 hkey_current_user 두곳에 존재하는데 필자는 그 차이를 모르겠다. 따라서 두곳 모두 바꾸어 준다. 그러나 테스트 결과 hkey_current_user만 수정해도 무방하였다.



※ SetValue의 첫번째 파라미터는 값을 나타낸다.


     0:허용  1:확인  3:사용안함



※ SetValue의 두번째 파라미터는 값이름을 나타낸다. (1201 : 안전하지 않은 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립트)



참조


엔트리 정의 기본값 권장값
1001 서명된 ActiveX 컨트롤 다운로드 0 3
1004  서명 안 된 ActiveX 컨트롤 다운로드 0 3
1200  ActiveX 컨트롤과 플러그인 실행 0 1
1201 안전하지 않은 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립트 1 3
1400  액티브 스크립팅 허용 0 1
1402 자바 애플릿 스크립트 0 1
1406 도메인 간의 데이터 소스 액세스 0 3
1407 스크립트를 통한 붙여넣기 작업 허용 0 3
1601  암호화되지 않은 폼 데이터 제출 0 1
1604 폰트 다운로드 0 3
1606  사용자 데이터 유지 0 3
1607  서로 다른 도메인 간의 하위프레임 이동 0 3
1802  파일의 드래그 앤 드롭이나 복사 및 붙여넣기  0 1
1803  파일 다운로드 0 3
1804  IFRAME에 프로그램과 파일 시작 0 3
1E05  소프트웨어 채널 사용권한 30000 20000



 


MSDN참고: http://technet.microsoft.com/ko-kr/library/cc700750.aspx



※ 보안관련 수정 내용은 새로 시작되는 익스플로러부터 적용된다.


———————————————————————————————-


최재권 jk9053@nate.com

댓글 남기기