문제

C#에서 ActiveX 컨트롤을 작성했으며 Regasm 명령을 사용하여 작동하게했으며 보안 수준이 낮게 설정되어있는 한 잘 작동합니다. 다음 단계로 .CAB 설치 프로그램 (ICD- 인터넷 구성 요소를 만들었습니다. 다운로더), 그리고 테스트 인증서와 함께 .CAB 파일 및 ActiveX .dll 파일에 서명했습니다. 내 브라우저에서 HTML 페이지를 눌렀을 때 설치 부품은 IE의 기본 보안 설정으로 잘 작동하지만 결국에는 아무것도 설치되지 않고 적십자사가 ActiveX 대신 표시되는 것으로 보입니다. 또한 Windows 디렉토리에서 다운로드 프로그램 파일 폴더를 탐색했으며 상태 열에서 "알 수없는"이라는 단어를 표시합니다. 다른 모든 ActiveX를 위해 "설치"되지만. 문제가 될 수 있습니다. 또한 Regasm 명령을 사용하여 어셈블리를 등록하면 잘 작동하고 ActiveX에 서명했지만 여전히 브라우저 설정에서 보안 표시 줄을 낮게 이동해야합니까? 왜 그렇습니까? 그러면 서명의 목적은 무엇입니까? 나는 사용했다 RegisterServer=yes 내 .inf 파일에서

어떤 사람 이이 문제를 이미 겪었다면 알려주세요.

도움이 되었습니까?

해결책

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

개인적으로, 나는 c#이 아닌 C ++ & ATL에서만 이것을 수행했지만 여기에 C#에서이를 달성하는 데 도움이되는 블로그 게시물이 있습니다.

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

그 이유는 사악한 개인의 스크립트가 객체를 사용하여 IE가 제공하는 일반적인 보안을 우회 할 수 있으므로 ActiveX 객체가 신뢰할 수없는 페이지 자체를 방어해야합니다.

택시에 서명 할 때, 당신은 그들이 다운로드하는 택시가 그들이 다운로드하고 있다고 생각하는 택시라고 사용자에게 말하고 있습니다. 즉, 일부 악의적 인 개인이 당신의 택시를 위험한 택시로 교체하지 않았다는 것입니다. 그들이 당신을 출판사로 신뢰한다면, 그들은 ActiveXobject가 그 자체로 악의적 인 일을하거나 자신이 신뢰하는 다른 코드와 함께 악을 행하지 않을 것이라고 믿을 수 있습니다.

iobjectsAfety를 구현할 때 interfacesafe_for_untrusted_caller |를 반환합니다 interfacesafe_for_untrusted_data, 즉 다른 사람이 객체를 악의적으로 사용할 수 없으므로 사용자가 명시 적으로 신뢰하지 않는 코드와 함께 실행할 수 있다고 말합니다.

다른 팁

나에게 위의 해결책은 작동하지 않습니다. TLB도 등록해야했습니다

with : regasm mydll.dll /tlb

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top