2009-10-29 5 views
1

C#으로 ActiveX 컨트롤을 작성했으며 regasm 명령을 사용하여 작동 시켰습니다. 보안 수준이 낮음으로 설정되어 있으면 정상적으로 작동합니다. 다음 단계로 .cab 설치 프로그램 (ICD - 인터넷 구성 요소 다운로더)을 만들고 테스트 인증서가있는 .cab 파일과 ActiveX .dll 파일에 서명했습니다. 내 브라우저에서 html 페이지를 누르면 설치 부분이 IE의 기본 보안 설정과 잘 작동하지만 결국에는 아무 것도 설치되지 않고 빨간색 십자가가 ActiveX 대신 표시됩니다. 또한 Windows 디렉터리 아래에서 Download Program Files 폴더를 탐색했습니다. 상태 열에 "unknown"이라는 단어가 표시됩니다. 다른 모든 activeX에 대해서는 "설치"됩니다. 무엇이 문제 일 수 있습니다. 또한 regasm 명령을 사용하여 어셈블리를 등록하면 정상적으로 작동하며 ActiveX에 서명했지만 여전히 보안 표시 줄을 브라우저 설정에서 낮음으로 이동해야합니까? 왜 그렇게 되니? 그렇다면 서명의 목적은 무엇입니까? 내 .inf 파일에 RegisterServer=yes을 사용했습니다.ActiveX가 기본 보안 설정으로 제대로 작동하지 않습니다.

이미이 문제가 발생하는 경우 알려주십시오.

+0

TLB RegAsm을 MyDll.DLL/당신은 당신이 기대하는 것을 볼 수 있습니까 : 은 내가 TLB를도와

를 등록하는 데 필요한? 테스트를 해봤다면 하위 버전에 여러 버전의 컨트롤이있을 수 있습니다. 모든 파일을 삭제하고 깨끗한 다운로드/설치를 시도하십시오. –

+0

예 다운로드 된 구성 요소가 있습니다 .. 구성 요소의 이름이 내 activeX 컨트롤의 CLSID이며 상태가 알려지지 않음, 한 가지 더 regasm 명령을 사용하여 수동으로 어셈블리를 등록하면 CLSID에서 프로그램 파일 다운로드에서 내 컨트롤의 이름이 다음과 같이 변경됩니다. 강력한 이름 키를 ActiveX 용으로 사용해 왔지만 여전히 작동하지 않습니다. 나는 폴더를 청소 한 후에 시도했다. –

답변

3

IE에서 실행하려면 Internet Explorer가 신뢰할 수없는 호출자 및/또는 신뢰할 수없는 데이터로 호출하는 것이 안전하다는 것을 알 수 있도록 IObjectSafety를 구현해야합니다. (실제로 안전하다면)

개인적으로, 나는 이것을 C++로하지 않고 & ATL이 아니라 ATL로 작성했습니다. 그러나 여기에 C#에서이를 달성하는 데 도움이되는 것처럼 보이는 블로그 게시물이 있습니다.

http://blog.devstone.com/aaron/2007/06/12/ImplementingIObjectSafetyInNETMarkingClassesSafeForScripting.aspx

그 이유는 사악 해 개인이 스크립트 그래서 당신의 ActiveX 객체가 신뢰할 수없는 페이지 자체 방어해야하며, IE에서 제공하는 일반적인 보안을 우회하기 위해 개체를 사용할 수 있다는 것이다

.

택시에 서명하면 다운로드중인 택시가 다운로드 중임을 사용자에게 알립니다. 즉, 일부 악의적 인 개인이 귀하의 택시를 위험한 것으로 바꾸지 않았 음을 나타냅니다. 사용자가 게시자를 신뢰하면 ActiveXObject가 자체적으로 또는 신뢰할 수있는 다른 코드와 함께 악의적 인 작업을 수행하지 않을 것이라고 신뢰할 수 있습니다.

IObjectSafety를 구현하면 INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA를 사용하면 다른 사람이 악의적으로 개체를 사용할 수 없으므로 IE에서 명시 적으로 신뢰하지 않는 코드와 함께 실행하는 것이 안전합니다.

+0

그럼 내 ActiveX 서명의 목적은 무엇입니까 ?? 나는 x509 인증서로 서명했고 ActiveXX DLL 파일을 마우스 오른쪽 버튼으로 클릭 한 다음 디지털 서명을 보여 주었다. –

+1

당신의 ActiveX임을 보여줄 수는 있지만 웹 페이지를 신뢰할 수는 없다. 일단 ActiveX가 설치되면이를 호출하는 스크립트. 인트라넷에서 디스크에 읽고 쓰거나 "잠재적 인 기밀 정보"를 서버에 보낼 수있는 "위험한"개체가있을 수 있습니다. 이것은 서명되어야하지만 현재와 같이 신뢰할 수있는 영역의 페이지에서 객체를 호출 할 때만 작동해야합니다. 큰 야생 인터넷에서 사용자가 말하는 것을 수행하는 위젯에 ActiveX 객체를 사용할 수 있습니다. 이는 안전하며 IObjectSafety로 표시해야합니다. –

+0

그래서 디지털 서명과 함께 인터페이스도 구현해야합니까? 내가 맞습니까? 보안 설정을 변경하지 않고도 내 웹 페이지에서 사용할 수 있습니까? 그래서 나는 두 가지가 필요합니다 1) IObjectSafety 구현 2) 디지털 서명 내가 잘못하면 저를 옳게 교정합니까? –

1

나를 위해 위의 솔루션이 작동하지 않습니다. 당신은 명령 프롬프트를 사용하여 다운로드 한 프로그램 파일에 가면

관련 문제