SafeCtl.exe implementa IObjectSafety no controlo ActiveX

Traduções de Artigos Traduções de Artigos
Artigo: 164119 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

O exemplo SafeCtl.exe demonstra como modificar um controlo ActiveX MFC baseadas em para indicar quem publicou o código e se um controlo ter sido adulterado. O exemplo pode ajudar a identificar se o controlo é seguro para processamento de scripts e seguro para inicialização.

Mais Informação

O ficheiro seguinte está disponível para transferência a partir do Centro de transferências da Microsoft:
SafeCtl.exe
Para obter mais informações sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
119591Como obter ficheiros de suporte da Microsoft a partir de serviços online
Microsoft procedeu de vírus neste ficheiro. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o ficheiro foi publicado. O ficheiro é alojado em servidores com segurança avançada o que ajuda a impedir alterações não autorizadas ao ficheiro.

No Internet Explorer 3.0 e versões posteriores, os utilizadores podem adicionar código sob a forma de controlos ActiveX para as respectivas páginas Web. A guia <object> é utilizada para especificar um controlo. Depois de criada uma instância do controlo, os respectivos atributos podem ser definidos através de interfaces de persistência do controlo. Por exemplo, para cada código de <param> do Internet Explorer encontra no contexto de uma marca de <object> ao analisar uma página HTML, Internet Explorer passa um conjunto de propriedade através do controlo correspondenteinterface IPersistPropertyBag . Além disso, o comportamento de um controlo pode ser personalizado através da utilização de scripts incorporados na página que executar os métodos e modificar as propriedades expostas através da interface de automatização do controlo.

Assinatura tecnologia em código Authenticode permite aos utilizadores finais para identificar quem publicou o código e para verificar que ninguém adulterou esse código desde que foi assinado. Não garante que o código é seguro quando as respectivas propriedades são inicializadas com valores não fidedignos ou quando o respectivo modelo de automatização é condicionado por scripts que não considere fidedignas. Para evitar tal segurança potencial hazards, as definições de segurança do Internet Explorer predefinido, que são acessíveis através do separador segurança da Internet Explorer Opções de propriedade da folha, requer que um controlo se regista como implementar as categorias de componente adequado ou que o controlo implementa a interface IObjectSafety . O exemplo ilustra ambos.

Antes que define as propriedades de um controlo incorporado numa página HTML, o Internet Explorer consulta o controlo para IObjectSafety . Se for suportado, Internet Explorer, em seguida, chama o SetInterfaceSafetyOptions método nesta interface, passando o valor INTERFACESAFE_FOR_UNTRUSTED_DATA, bem como o identificador de interface (IID) de uma interface de utilizador. Em páginas HTML hoje em dia, onde as propriedades tendem a ser inicializado através de código <param>, o IID é IID_IPersistPropertyBag. O IID é fornecido para situações em que poderá ser proteger a segurança no algumas interfaces, mas não outros e neste exemplo não é importante. A implementação de exemplo verifica se certificar de que a interface é suportada. Se o controlo pode não danos ao sistema do cliente independentemente dos dados com a qual poderão ser inicializada através dessa interface do utilizador e interface do utilizador for suportada, a implementação do controlo dométodo de IObjectSafety::SetInterfaceSafetyOptions deve devolver S_OK. Caso contrário, deve ser devolvido E_FAIL.

Antes de permitir quaisquer scripts incorporados na página a ser executado, os do Internet Explorer chamadas da mesma forma através do controlo IObjectSafety:: SetInterfaceSafetyOptions método mas passa, em vez disso, o valor INTERFACESAFE_FOR_UNTRUSTED_CALLER e o IID de alguns scripts de interface, que é normalmente IID_IDispatch. O controlo deve devolver S_OK ou E_FAIL correctamente.

Se o controlo não suportar IObjectSafety , Internet Explorer utiliza o Gestor de categorias de componentes para ver se o controlo implementa a categoria "seguro para inicialização" CATID_SafeForInitializing e a categoria "seguro para processamento de scripts", CATID_SafeForScripting, respectivamente.

Se o controlo não suporta IObjectSafety e não registou-se como implementar as categorias de componente apropriado e se o nível de segurança do Internet Explorer está definido para alta, a predefinição, o Internet Explorer não irá inicializar as propriedades do controlo, nem executará quaisquer scripts incorporados na página. Neste cenário, os utilizadores finais apresentada uma caixa de diálogo que contém o seguinte texto:
Potencial violação de segurança evitada
Esta página contém conteúdo activo que não é seguro verifiably apresentar. Para proteger o computador, este conteúdo não será apresentado.
Segue-se uma lista de orientações são retirados da artigo também Johns, "assinatura e marcação controlos ActiveX:"
  • O controlo não manipular o sistema de ficheiros.
  • O controlo não manipular o registo (excepto para registar e anular o registo próprio).
  • O controlo não overindex matrizes ou caso contrário, manipular memória incorrectamente.
  • O controlo valida (e corrige) todas as entradas, incluindo a inicialização, parâmetros de método e funções do conjunto de propriedades.
  • O controlo não utilizá indevidamente quaisquer dados que é fornecido pelo utilizador ou que seja sobre esse utilizador.
  • O controlo foi testado uma variedade de cenários.
Para obter informações adicionais, visite o seguinte Web site da Microsoft:
Assinatura e controlos ActiveX de marcação
http://msdn2.microsoft.com/en-us/library/ms974305.aspx
Se o autor de um controlo verificou que foram satisfeitos os critérios acima juntamente com quaisquer outros que eles o conceito de, deve suportar ambos os IObjectSafety e registar o respectivo controlo como implementar as categorias de componente apropriado. Para obter uma lista das vantagens e desvantagens de cada um destes métodos, consulte a secção correspondente também Johns artigo, "Assinatura e marcação controlos ActiveX."

A compilar

Criar o exemplo requer o Microsoft Visual C++ 5.0 ou Microsoft Visual C++ 6.0. Depois de extrair os ficheiros de arquivo, carregar projecto Safectl.mdp na Microsoft Developer Studio e criar o projecto. Como parte do processo de compilação, deverá registar o controlo propriamente dito.

aviso Antes de modificar o exemplo utilizando dois símbolos pré-processador que estão listados posteriormente nesta secção, tem de anular o registo de controlo caso tenha já sido criado ou registado no computador. Para o fazer, execute a ferramenta Regsvr32.exe com o parâmetro /u para o controlo. Também pode adicionar uma entrada de ferramenta personalizada em Developer Studio será efectuado para o projecto actual. No menu Ferramentas , clique em Personalizar e, em seguida, faça clique sobre o separador ' Ferramentas . criar uma nova entrada com as seguintes informações:
                Name: &Un-register ActiveX Control
             Command: e:\Program Files\DevStudio\SharedIDE\BIN\REGSVR32.EXE
           Arguments: /u /v "$(TargetPath)"
   Initial Directory: $(TargetDir)
				
nesta altura, pode utilizar a entrada "ferramentas/anular o registo controlo ActiveX" para anular o registo de controlo antes de adicionar ou remover as definições de pré-processador exemplo específicas.

Para criar o controlo para que regista-se como implementar o "seguro para inicialização" e o "seguro para scripts" componente de categorias, siga estes passos:
  1. No menu projecto , clique em definições .
  2. Clique no separador C++ e, em seguida, definir a seguinte definição pré-processador:
    L_USE_COMCAT
  3. Clique em OK para fechar a caixa de diálogo definições e, em seguida, recriar o controlo.
Para criar o controlo para que implementa IObjectSafety em vez disso, siga os passos anteriores, mas substitua L_USE_COMCAT L_IMPL_OBJECTSAFETY.

Também é válido para definir os símbolos de pré-processador. Observe que estes símbolos são específicos para este projecto. Por predefinição, as definições de compilação do projecto definirem ambos os símbolos de pré-processador.

Para executar

Depois do controlo de exemplo foi criado e foi registado com êxito, inicie o Internet Explorer e, em seguida, abra a página Safectl.htm, incluída com o exemplo.

Se o controlo tiver sido configurado para se registar como seguro ou implementar IObjectSafety , deve ler a legenda de controlos "Seguros para inicialização!" Quando clica no controlo, deverá receber a seguinte mensagem:
Tem de ser seguro para processamento de scripts!
Se Internet Explorer está definido para a definição de segurança mais elevada, não é executado o script associado e receber a seguinte mensagem:
Não é seguro para inicializar!


Nota Se estiver a criar e testar configurações diferentes deste exemplo, certifique-se de que actualizar a página Web no browser. Se não actualizar a página, pode estar a utilizar a versão em cache do controlo em vez da compilação mais recente.

Referências

Para obter mais informações sobre as APIs de segurança, consulte a segurança API referência na documentação online do SDK do ActiveX.

Para obter mais informações sobre assinatura em código, consulte "Assinatura com Microsoft Authenticode Technology" na documentação online do SDK do ActiveX.

Para obter mais informações sobre categorias de componentes, consulte o tópico "Componente de categorias" na documentação online do ActiveX SDK.

Para mais informações sobre como implementar um COM (Component Object Model) interface no MFC da, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
141277Como forçar uma interface numa aplicação MFC utilizando o Visual C++
Para obter informações detalhadas sobre como desenvolver um controlo ActiveX e como implementá-la na Web, visite o seguinte Web site da Microsoft:
ABCs de controlos ActiveX MFC
http://msdn.microsoft.com/en-us/library/ms968497.aspx

Propriedades

Artigo: 164119 - Última revisão: 26 de abril de 2007 - Revisão: 5.4
A informação contida neste artigo aplica-se a:
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 3.0
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
Palavras-chave: 
kbmt kbdownload kbfile kbinfo kbsample KB164119 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 164119

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com